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