C语言switch语句
一、switch语句
switch (整型表达式) {
case 整型常量表达式:
语句;
case 整型常量表达式:
语句;
...
default:
语句;
}
为什么要使用switch语句?我们先来看一个场景。
#include <stdio.h>
int main() {
int day = 0;
scanf("%d" , &day);
if (day == 1) {
printf("Monday\n");
}
else if (day == 2) {
printf("Tuesday\n");
}
else if (day == 3) {
printf("Wednesday\n");
}
else if (day == 4) {
printf("Thursday\n");
}
else if (day == 5) {
printf("Friday\n");
}
else if (day == 6) {
printf("Saturday\n");
}
else if (day == 7) {
printf("Sunday\n");
}
else {
printf("输入有误\n");
}
return 0;
}
这个代码输入一个天数,判断是星期几输出。很明显如果if-else多分支语句来书写,看起来有些不优雅,但是用switch语句可以很好解决这个问题。
#include <stdio.h>
int main() {
int day = 0;
scanf("%d" , &day);
switch (day) {
case 1:
printf("Monday\n");
// 若不写break则会造成穿透,会继续向下执行
break;
case 2:
printf("Tuesday\n");
break;
case 3:
printf("Wednesday");
break;
case 4:
printf("Thursday\n");
break;
case 5:
printf("Friday\n");
break;
case 6:
printf("Saturday\n");
break;
case 7:
printf("Sunday\n");
break;
// 没有一种case符合条件,则就会进入default
default :
printf("输入错误\n");
break;
}
return 0;
}
switch语句中的break是为了防止穿透,不是必需的,根据需要即可。default也是如此,switch语句中case和default的顺序可以随意颠倒。
switch可以实现的场景,if语句也可以实现。但是if可以实现的场景,switch不一定可以实现。switch语句不是必需的,根据个人习惯即可。