#include<iostream> using namespace std; int main() { int n = 2; switch (n) { case 1:int i; break; case 2:i = 2; cout << i << endl; break; } return 0; }
为什么会程序会正确?case 1别跳过, i不应该是未定义的才对吗?
解决方案
40
由于switch的几个case语句在同一个作用域(原因是case 语句只是标签,它们共属于一个swtich语句块),所以假如在某个case下面声明变量的话,其他的case语句也能看到。
变量的声明是在编译阶段,而变量的赋值则是在运行时。
仔细看看下面这篇帖子:
http://blog.csdn.net/tonywearme/article/details/7075809
变量的声明是在编译阶段,而变量的赋值则是在运行时。
仔细看看下面这篇帖子:
http://blog.csdn.net/tonywearme/article/details/7075809