为什么在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中这是正常工作的。我不得不把所有变量的声明移到外面。