黑马程序员技术交流社区

标题: switch语句中,case的作用? [打印本页]

作者: 1002344082    时间: 2015-4-8 08:28
标题: switch语句中,case的作用?
#include<stdio.h>
int main ()
{       
int a=10;
        switch(a)
        {
                case 10:
                        printf("A\n");
                       
                case 5:
                        printf("B\n");
                        break;
                case 0:
                        printf("C\n");
                        break;
               
        default:
                        printf("D\n");
                        break;
        }
       
  return 0;
}


问:为什么case 10;中,去掉break,执行的结果是A B,而不是A D呢,10!=5,应该不会进入执行输出B的操作啊
作者: xiaofei93    时间: 2015-4-8 08:54
case10后面没有break会继续往下执行,一直到break结束,就输出了AB,你的a是10,有对应的case,所以不会执行default里面的内容不会打印D
作者: 1002344082    时间: 2015-4-8 09:04
xiaofei93 发表于 2015-4-8 08:54
case10后面没有break会继续往下执行,一直到break结束,就输出了AB,你的a是10,有对应的case,所以不会执 ...

谢谢,我也是刚刚学会,只要执行了第一个case的条件,没有break,会一直执行下去,不过接下来的case中条件会直接忽略.
作者: xiaofei93    时间: 2015-4-8 09:05
1002344082 发表于 2015-4-8 09:04
谢谢,我也是刚刚学会,只要执行了第一个case的条件,没有break,会一直执行下去,不过接下来的case中条件会 ...

嗯嗯就是这样,default是没有执行case才执行的,执行过case就不会执行default里面的
作者: LuciferTJD    时间: 2015-4-8 09:12
楼主你的意思是到case 5的时候判断不符合条件,选择跳过,同理0也跳过,最后来到default中。switch语句会先判断case是否匹配,匹配后执行,然后程序会只寻找break,而不会管中间的逻辑关系,所以会一直向下执行。比如switch中有两个case后面的表达式和switch后面的表达式都匹配,也不会执行两个,而是执行前一个后退出。




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