Code Bye

switch语句问题

#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

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明switch语句问题