为什么这个编译出来 是a=2,b=1,而不是a=2,b=0

[复制链接]
查看11 | 回复3 | 2013-3-30 11:34:10 | 显示全部楼层 |阅读模式
int x=1,y=0,a=0,b=0;switch(x){case 1://开始x=1,匹配case 1switch(y){
//接着进入switch(y), y=0 ,匹配case 0;case 0:a++; break; //执行后 a = 1;有break就结束switch(y)case 1:b++; break;}
//因为switch(x)的case 1没有break,所以接着执行case 2;case 2:a++; b++; break; //执行后 a = 2,b= 1;然后break,
//就结束switch(x)case 3:a++; b++;}...
回复

使用道具 举报

千问 | 2013-3-30 11:34:10 | 显示全部楼层
switch(x) 中,case1没有break语句,会继续执行case2 的语句 有效case语句为 switch(y) 的case0和switch(x) 的case2,所以a=2,b=1....
回复

使用道具 举报

千问 | 2013-3-30 11:34:10 | 显示全部楼层
如果没有break语句,则会把所有的case语句执行完,你的case 3 语句也会执行,所有a++进行了2次,b+进行了1次。只要在你的switch(x)的case 1 后面加上break,即可。 最后在case 3后面也加上break,(虽然对这道题没有影响,但是希望你养成良好的习惯)...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行