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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© luoleiheima 中级黑马   /  2015-7-14 21:42  /  911 人查看  /  7 人回复  /   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的操作啊

7 个回复

倒序浏览
学习了,赞一个
回复 使用道具 举报
加油。。。。。。。。
回复 使用道具 举报
一旦case与switch 判断条件匹配,就会一直执行,知道遇到break,输出是A  B。后面的没有执行
回复 使用道具 举报
因为你的case 10部分没有break语句,故当a=10时,执行case 10,输出A,再往下执行case 5,输出B,然后break跳出switch语句
回复 使用道具 举报
luoleiheima 来自手机 中级黑马 2015-7-16 08:23:30
地板
多谢各位大神的指点……
回复 使用道具 举报
这是case的一个穿透问题,因为在执行case10语句后,没有遇到break,所以没有跳出switch结构,直到遇到下一个break
回复 使用道具 举报
WPeng 中级黑马 2015-7-16 16:37:47
8#
因为你在case 5:之后使用了break。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马