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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 1002344082 中级黑马   /  2015-4-8 08:28  /  1629 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

#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的操作啊

5 个回复

正序浏览
楼主你的意思是到case 5的时候判断不符合条件,选择跳过,同理0也跳过,最后来到default中。switch语句会先判断case是否匹配,匹配后执行,然后程序会只寻找break,而不会管中间的逻辑关系,所以会一直向下执行。比如switch中有两个case后面的表达式和switch后面的表达式都匹配,也不会执行两个,而是执行前一个后退出。
回复 使用道具 举报
1002344082 发表于 2015-4-8 09:04
谢谢,我也是刚刚学会,只要执行了第一个case的条件,没有break,会一直执行下去,不过接下来的case中条件会 ...

嗯嗯就是这样,default是没有执行case才执行的,执行过case就不会执行default里面的

点评

要是case里没有跳出,貌似default也会顺着执行,我记得是这样,这个条件语录好像只是从哪一个开始执行,如果不跳出,会执行下面所有的,如果default在第一行,没有跳出,那么下面的也执行。我记得是这样   发表于 2015-4-8 09:11
回复 使用道具 举报
xiaofei93 发表于 2015-4-8 08:54
case10后面没有break会继续往下执行,一直到break结束,就输出了AB,你的a是10,有对应的case,所以不会执 ...

谢谢,我也是刚刚学会,只要执行了第一个case的条件,没有break,会一直执行下去,不过接下来的case中条件会直接忽略.
回复 使用道具 举报
case10后面没有break会继续往下执行,一直到break结束,就输出了AB,你的a是10,有对应的case,所以不会执行default里面的内容不会打印D
回复 使用道具 举报 1 0
您需要登录后才可以回帖 登录 | 加入黑马