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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Zeus-S 中级黑马   /  2015-1-25 19:39  /  828 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

比如if语句里
if(6>5){
int a =10;
}
printf("%d",a);

看视频里老师说以上是错误的,因为a的作用域只在大括号里,所以上述错误。但是
在switch里
int a=10
int b=10
switch(a){
         case10:
             printf("A\n");
             b++;
         case5:
             printf("B\n");
             b++;
         case0:
             printf("c\n");
             b++;
             break;
         default:
             printf("D\n");
             break;
}

   printf("%d",b);

以上结果为,打印出ABC以及b的值为13,,,ABC我可以理解的,但是b的值不应该是10么?b++的作用域不该是在switch里面么?在break退出语句之后b++是不是应该也就没有了?因为上述两个作用域的问题我纠结死了,望大神解释一下,通俗一点,本人零基础,所以都还是很不熟悉的{:2_45:}

3 个回复

倒序浏览
b++其实是定义在switch外面的int b,如果在switch里定义int b,才局限于switch。
回复 使用道具 举报
从今以后 发表于 2015-1-25 21:47
b++其实是定义在switch外面的int b,如果在switch里定义int b,才局限于switch。

哦哦哦,好通俗的说法,一看就懂,多谢多谢,因为视频里老师也没扯到,所以我就打结了。:handshake
回复 使用道具 举报
进来看看
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马