题目:switch语句中各个case和default出现先后次序不影响程序执行结果。
本题目的答案有一定的争议性,因为对于switch语句中,各case和default的顺序是否对程序执行结果有影响还是取决于各语句的内容的。先后次序不影响程序执行结果的前提时,每条case及default语句后均含有break语句
1、语句后部分无break,会影响程序执行结果
例如以下两个程序,调整顺序后,输出结果有"123#“变为了"1#”:
程序段一
#include "stdio.h"
int main()
{
int k=1;
switch(k)
{
case 1:
printf("1");
case 2:
printf("2");
case 3:
printf("3");
default:
printf("#");
}
}
程序段二
#include "stdio.h"
int main()
{
int k=1;
switch(k)
{
case 3:
printf("3");
case 2:
printf("2");
case 1:
printf("1");
default:
printf("#");
}
}
2、当case及default语句后面,均有break时,不影响程序执行结果
修改上面两个程序,在每一个case及default后面,都增加上break,运行结果均为1
程序段一:
#include "stdio.h"
int main()
{
int k=1;
switch(k)
{
default:
printf("#");
break;
case 1:
printf("1");
break;
case 2:
printf("2");
break;
case 3:
printf("3");
break;
}
}
程序段二:
#include "stdio.h"
int main()
{
int k=1;
switch(k)
{
default:
printf("#");
break;
case 3:
printf("3");
break;
case 2:
printf("2");
break;
case 1:
printf("1");
break;
}
}
case和default顺序对switch执行的影响
文章讨论了在C语言中,switch语句中case和default的顺序如何影响程序执行结果。当case和default后没有break时,顺序确实会影响执行路径,导致不同的输出。而当每个case和default后都有break时,顺序就不再重要,程序会按预期执行并终止于第一个匹配的case或default。
3318





