Avatar ·

Pourquoi en C++ on ne peut pas déclarer des variables à l'intérieur d'un bloc switch sans accolades ?

Bonjour à tous ! J'ai commencé à apprendre le C++ et j'ai rencontré une erreur très étrange en utilisant switch. Je devais écrire une calculatrice simple qui effectue différentes opérations selon le symbole saisi. Voici mon code : ```cpp #include using namespace std; int main() { char op; int a = 10, b = 5; cout << "Enter operation (+, -, *, /): "; cin >> op; switch (op) { case '+': int result = a + b; // Erreur ! cout << result; break; case '-': // ... break; } return 0; } ``` Le compilateur donne une erreur : "cannot jump from switch statement to this case label" ou quelque chose comme "initialization of 'result' is skipped by 'case' label". Je comprends que switch fonctionne comme un goto et saute à l'étiquette appropriée, mais pourquoi ne peut-on pas déclarer une variable directement à l'intérieur de case ? Pourtant, je l'écris après les deux-points, avant le prochain break. Quel est le problème et comment déclarer correctement ?