黑马程序员技术交流社区

标题: 关于C语言switch的问题 [打印本页]

作者: pprgra56    时间: 2014-3-10 16:12
标题: 关于C语言switch的问题
本帖最后由 pprgra56 于 2014-3-11 09:50 编辑

switch(a){
case 1:
....
break;
}
 
出现如下错误:
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;
        }

}




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2