黑马程序员技术交流社区

标题: swich--case的一些问题 [打印本页]

作者: 每天进步一点点    时间: 2014-6-29 21:11
标题: swich--case的一些问题
为甚么在case后面定义变量必须加上大括号  ,例如:
这样就会出错
  1. switch (1) {
  2.         case 1:
  3.          int a =8; // Expected expression
  4.             break;
  5.             case 2:
  6.             printf("haha");
  7.             break;
  8.         default:
  9.             break;
  10.     }
复制代码




作者: 骑着飞机去看海    时间: 2014-6-29 21:37
作用域,你的作用域有问题,既然从新定义了变量a那么就应该在第一个break后面加}
作者: 骑着飞机去看海    时间: 2014-6-29 21:42
改正代码如下
  1. switch (1)
  2. {
  3.     case 1:
  4.     {
  5.         int a =8; // Expected expression
  6.         break;
  7.     }
  8.     case 2:
  9.         printf("haha");
  10.         break;
  11.     default:
  12.         break;
  13. }
复制代码

作者: fantacyleo    时间: 2014-6-29 22:06
根据c标准,如果有一个case子句在变量a的作用域范围,那么整个switch的所有case和default子句都必须在a的作用域范围内。我的理解,这是避免声明a的case子句被跳过而到了一个未加声明直接使用a的case或default
作者: 我是一只小小强    时间: 2014-6-30 11:08
不加大括号,case后面的定义变量的作用域电脑会无法识别它的作用域是仅仅在case1还是以后所有就会报错




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