出现如下错误:
error: a label can only be part of a statement and a declaration is not a statement
但加上括号后 就没错误了 这是为什
switch(a){
case 1:
{
...
}
...
}作者: z82454642 时间: 2014-3-10 16:23
不明白意思...作者: apple_victor 时间: 2014-3-10 16:28
你在switch里面可能定义了变量,用的不当的语句。你一旦括起来,就没问题了。
另外:最好在switch语句最后加上default 语句。作者: 牧之 时间: 2014-3-10 16:40
case语句里面重新定义新变量要加{}(大括号)!switch(a){
case 1:
{
int b;//比如重新第一新变量b
}
default:
....
break;作者: 悟中生有 时间: 2014-3-10 18:32
应该是作用域的问题。作者: conpgy 时间: 2014-3-10 19:13
switch(/*...*/)
{
case 1:
int a=0;//在case 1中定义a
break;
case 2:
//int a=0;//错误,重复定义,上面已经定义了a了
a=1; //在case 2中使用
break;
default:
;
}
如果不加大括号。a在case1中定义。则不能在case2中定义。因为不能重复定义。但是如果switch执行了case2,跳过了case1。那么a没有定义。所以为了防止出现这种情况。要加大括号{}。这样变量的作用域只能在括号内。如果case2也需要。重新定义一个变量就行了。作者: Silent_memory 时间: 2014-3-10 22:56
如果要在case后面定义新的变量,必须用大括号{}包住
char c = '+'; int a = 19; int b = 11;
switch(c){
case '+':
{
int sum = a+b;
break;
}