Avatar ·

Pourquoi en C++ switch-case ne permet-il pas de déclarer des variables sans accolades ?

Bonjour à tous ! Je viens de commencer à apprendre le C++ après Python, et j'ai rencontré un problème étrange. Quand j'écris un switch-case normal, le compilateur se plaint de la déclaration de variables à l'intérieur de case. Voici un exemple de code qui ne fonctionne pas chez moi : ```cpp #include int main() { int value = 2; switch (value) { case 1: int x = 10; // Erreur ! std::cout << "Case 1: " << x << std::endl; break; case 2: int y = 20; // Erreur aussi ! std::cout << "Case 2: " << y << std::endl; break; default: std::cout << "Default" << std::endl; } return 0; } ``` Le compilateur (GCC) génère des erreurs comme "jump to case label" et "crosses initialization of variable". Je comprends que switch-case n'est ni une fonction ni un bloc de code, mais pourquoi ne peut-on pas simplement déclarer une variable à l'intérieur de case ? En Python ou JavaScript, cela fonctionne normalement. Je suis obligé de sortir toutes les déclarations de variables