突然想到一个问题,如果switch语句中,case的后面没有加break会怎么样呢?试试看,哈哈
/*可以猜想一下程序的运行结果。*/
#include "stdio.h"
int main()
{
char a = 0;
printf("不加break\n");
switch(a){
case 0:printf("1\n");
case 1:printf("2\n");
case 2:printf("3\n");break;
case 3:printf("4\n");
default :break;
}
printf("加入break\n");
switch(a){
case 0:printf("a\n");break;
case 1:printf("b\n");break;
case 2:printf("c\n");break;
case 3:printf("d\n");break;
default :break;
}
return 0;
}
结果如下:
不加break
1
2
3
加入break
a
分析结果我们可以发现:
a的值逐个和 case 后的常量表达式比较,若不等则继续往下比较,若一直不等,则执行 default 后的语句;若等于某一个常量表达式,则从这个表达式后的语句开始执行,并执行后面所有 case 后的语句。
switch 语句不会在执行判断为真后的语句之后跳出循环,而是继续执行后面所有 case 语句。在每一 case 语句之后增加 break 语句,使每一次执行之后均可跳出 switch 语句,从而避免输出不应有的结果。
本文通过示例代码分析了在C语言中,switch语句中不使用break关键字时程序的运行结果。当case后面不加break时,程序会连续执行后续的所有case语句,直到遇到break或switch结束。这种行为可能导致意外的输出,因此通常每个case后推荐使用break来确保只执行匹配的单一语句块。

1780

被折叠的 条评论
为什么被折叠?



