Avatar ·

为什么在C++的switch-case中不能不用花括号声明变量?

大家好!我刚从Python开始学习C++,遇到了一个奇怪的问题。当我写一个普通的switch-case时,编译器会抱怨在case内部声明变量。以下是我无法正常工作的代码示例: ```cpp #include int main() { int value = 2; switch (value) { case 1: int x = 10; // 错误! std::cout << "Case 1: " << x << std::endl; break; case 2: int y = 20; // 也是错误! std::cout << "Case 2: " << y << std::endl; break; default: std::cout << "Default" << std::endl; } return 0; } ``` 编译器(GCC)会报出类似“jump to case label”和“crosses initialization of variable”的错误。我知道switch-case不是函数也不是代码块,但为什么不能在case内部直接声明变量呢?在Python或JavaScript中这是正常工作的。我不得不把所有变量的声明移到外面。