题目: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;
}
}