黑马程序员技术交流社区

标题: 作用域的问题,求解!! [打印本页]

作者: Zeus-S    时间: 2015-1-25 19:39
标题: 作用域的问题,求解!!
比如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:}
作者: 从今以后    时间: 2015-1-25 21:47
b++其实是定义在switch外面的int b,如果在switch里定义int b,才局限于switch。
作者: Zeus-S    时间: 2015-1-26 00:13
从今以后 发表于 2015-1-25 21:47
b++其实是定义在switch外面的int b,如果在switch里定义int b,才局限于switch。

哦哦哦,好通俗的说法,一看就懂,多谢多谢,因为视频里老师也没扯到,所以我就打结了。:handshake
作者: 王德亮    时间: 2015-1-26 08:02
进来看看




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