C语言switch语句 #
一、switch语句概述 #
1.1 基本语法 #
c
switch (表达式) {
case 常量1:
语句1;
break;
case 常量2:
语句2;
break;
default:
语句3;
}
1.2 使用示例 #
c
#include <stdio.h>
int main() {
int day = 3;
switch (day) {
case 1:
printf("星期一\n");
break;
case 2:
printf("星期二\n");
break;
case 3:
printf("星期三\n");
break;
case 4:
printf("星期四\n");
break;
case 5:
printf("星期五\n");
break;
case 6:
printf("星期六\n");
break;
case 7:
printf("星期日\n");
break;
default:
printf("无效日期\n");
}
return 0;
}
二、case穿透 #
2.1 穿透现象 #
c
#include <stdio.h>
int main() {
int day = 1;
switch (day) {
case 1:
printf("星期一\n");
case 2:
printf("星期二\n");
case 3:
printf("星期三\n");
default:
printf("其他\n");
}
return 0;
}
输出:
text
星期一
星期二
星期三
其他
没有break会继续执行后续case。
2.2 利用穿透 #
c
#include <stdio.h>
int main() {
int month = 2;
switch (month) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
printf("31天\n");
break;
case 4:
case 6:
case 9:
case 11:
printf("30天\n");
break;
case 2:
printf("28或29天\n");
break;
default:
printf("无效月份\n");
}
return 0;
}
三、default分支 #
3.1 使用default #
c
#include <stdio.h>
int main() {
char grade = 'B';
switch (grade) {
case 'A':
printf("优秀\n");
break;
case 'B':
printf("良好\n");
break;
case 'C':
printf("及格\n");
break;
default:
printf("其他等级\n");
}
return 0;
}
default处理所有未匹配的情况。
四、switch vs if-else #
4.1 选择建议 #
| 场景 | 推荐 |
|---|---|
| 离散值判断 | switch |
| 范围判断 | if-else |
| 多分支等值判断 | switch |
4.2 switch限制 #
- 表达式必须是整型或字符型
- case值必须是常量
- 不能判断范围
五、总结 #
| 要点 | 说明 |
|---|---|
| break | 防止穿透 |
| default | 默认分支 |
| 穿透 | 可利用 |
下一步,让我们学习循环语句!
最后更新:2026-03-26