int x = 2,y=3;
switch(x)
{
default:
y++;
case 3:
y++;
break;
case 4:
y++;
}
因为case中没有满足x=2的,所以进入default,y++
default中没有break,则接着往下执行case 3 y++
这里碰到break,switch结束
所以注意case都要加break
switch(x)
{
default:
y++;
break;
case 3:
y++;
break;
case 4:
y++;
break;
}
在这个代码里面,当x=2时,执行fefault:语句,y++
此时y=4;
因为default后面芈月break语句,所以程序继续向下执行,
执行case 3:y++
此时y=5
后面遇到break退出switch()语句,
所以y的值为5
楼上的分析很对,一定要记得加break,不然就会出现意想不到的效果,我曾经就是因为一个break浪费了整整一个下午的时间
defaul执行后,少了break,就进入了case3。
因为你没有case2,程序会顺序执行,一直执行到break终止,执行了3次自加,所以为5!
switch(2) 循环两次,执行两次y++
先执行了default,后执行了case 3, 然后碰到break才跳出switch-case循环。故y进行了两次自加,变为5
default后边没有break,程序会一直往下执行,直到遇到break!
default后面没有break语句,会继续执行下去,所以执行到了case 3,最后y经过了两次++运算,值为5,建议将default放置到case下方,并且在后面添加break
default由于匹配x=2,执行y++,没有break,继续顺序执行,匹配一次之后,就不再匹配了,所以碰到case 3 ,会继续执行y++,碰到break,跳出来,所以y一共自加了2次,故为5