先上第一段代码:
#include <stdio.h>
int main(int argc, const char * argv[]) {
int a = 0;
switch (a) {
int b = 17;
case 0:
printf("%d\n",a);
break;
case 1:
printf("%d\n",a);
break;
default:
printf("%d\n",a);
break;
}
return 0;
}
运行后,结果如下图1:
可见该种方式定义变量的语句不会被执行。
定义位置换个地方后,代码如下:
#include <stdio.h>
int main(int argc, const char * argv[]) {
int a = 0;
switch (a) {
case 0:
int b = 17;
printf("%d\n",a);
break;
case 1:
printf("%d\n",a);
break;
default:
printf("%d\n",a);
break;
}
return 0;
}
运行结果报错,报错信息如下图2:
我们再加上一个大括号,代码入下:
#include <stdio.h>
int main(int argc, const char * argv[]) {
int a = 0;
switch (a) {
case 0:
{
int b = 17;
printf("%d\n",a);
break;
}
case 1:
printf("%d\n",a);
break;
default:
printf("%d\n",a);
break;
}
return 0;
}
这下没问题了,当然啦!这个变量b只能够在大括号内使用了哟!
可见switch语句里是可以定义变量的,就是要一个括号咯。
更新...