A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© pprgra56 中级黑马   /  2014-3-10 16:12  /  1522 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 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:

...

...
}

评分

参与人数 1技术分 +1 收起 理由
jing迪 + 1

查看全部评分

6 个回复

倒序浏览
不明白意思...
回复 使用道具 举报
你在switch里面可能定义了变量,用的不当的语句。你一旦括起来,就没问题了。
另外:最好在switch语句最后加上default 语句。
回复 使用道具 举报
case语句里面重新定义新变量要加{}(大括号)!switch(a){
case 1:

int b;//比如重新第一新变量b

default:
....
break;

评分

参与人数 1技术分 +1 收起 理由
jing迪 + 1

查看全部评分

回复 使用道具 举报
应该是作用域的问题。
回复 使用道具 举报
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也需要。重新定义一个变量就行了。

评分

参与人数 1技术分 +1 收起 理由
jing迪 + 1

查看全部评分

回复 使用道具 举报
如果要在case后面定义新的变量,必须用大括号{}包住
char c = '+'; int a = 19; int b = 11;
switch(c){
        case '+':
        {
                int sum = a+b;
                break;
        }

}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马