在写代码的时候,变量的声明不应该出现在label之后
比如switch语句中的case结构也可能会遇到类似的问题。
在case标签下面定义了变量,则会报错。
对此问题的分析:
由于switch的几个case语句在同一个作用域(因为case语句只是标签,它们共属于一个swtich语句块),所以如果在某个case下面声明变量的话,对象的作用域是在俩个花括号之间 也就是整个switch语句,其他的case语句也能看到,这样的话就可能导致错误。
解决方案:
我们可以通过在case后面的语句加上大括号处理,之所以加大括号就是为了明确我们声明的变量的作用域,就是仅仅在本case之中,其实为了更规范的写switch-case语句,我们应该在case语句后边加大括号。在case语句后加一个分号也可以解决问题!
问题样例:
int a;
switch (a) {
case 0:
break;
case 1:
int aa;
break;
case 2:
break;
default:
break;
}
解决方案:
int a; switch (a) {
case 0:
break;
case 1:; //加一个空的‘;’,表示空声明
int aa;
break;
case 2:
break;
default:
break;
}
//或者
int a;
switch (a) {
case 0:
break;
case 1:
{ //case语句后边加大括号
int aa;
break;
}
case 2:
break;
default:
break;
}
本文探讨了在switch语句中的case标签下声明变量所导致的问题及其原因,并提供了两种有效的解决方案:通过添加分号或大括号来明确变量的作用域。
4382

被折叠的 条评论
为什么被折叠?



