switch(k)
{ case 1: printf(”%d\n”, k++); //没有break;
case 2: printf(”%d\n”, k++); //没有break;
case 3: printf(”%d\n”, k++); //没有break;
case 4: printf(”%d\n”, k++); break;
default: printf(”Full!\n”);
}
switch(k)的特别注意事项是在每个case语句后面都要有break;控制语句,来跳过下面的case语句
如果不是每一个case语句后面都有break语句的话,程序就会继续向下执行
这里来说程序switch(3),直接跳到case 3,输出3,然后k++
因为没有break语句,所以程序继续执行case 4,即输出4,然后k++
结束
default: printf(”Full!\n”);
是一个判断语句,这里的话:如果k不等于1,2,3,也不等于4,那么就会输出Full!意思是提示这个k是错误的数值
k=3,从case3开始
k++是先运算后+
所以case3的时候先打印后加,所以打印显示为3,打印后k=4
case3没有break,顺势执行case4
同理,这时候先打印4,打印后K再加1
所以最后结果为:
3
4
case 后面一般跟 break
如果没有 break,就会不停的执行下去。
比如你的程序,从3哪里开始执行,case 4的语句也会执行。所以输出两个
如果k=1,那就会输出4个。嗯 就是这样。
k=3
执行switch语句中:case 3: printf(”%d\n”, k++); 此时打印3后k自加1;因为没有遇到break,所以继续执行switch语句:case 4: printf(”%d\n”, k++);此时打印4,k自加1,遇到break退出switch。
所以结果为:
3
4
还有条打印default语句,原因不知是你故意不打break还是你故意的,由于你没有加break;语句,程序先从k=3的值打印,然后顺序执行下面语句。自增符的后缀版本是先用后自增
default: printf(”Full!\n”);是k不等于1,2,3,4 时进行的处理(就是没有case匹配时)
还漏了break;