首页 > 编程笔记 > C语言笔记

c语言switch的用法以及注意事项

C语言中的 switch 语句是一种强大的多路分支结构,它可以根据一个表达式的值来选择执行不同的代码块。switch 语句通常用于替代多个 if-else 语句,使代码更加简洁和易读。
 

switch 语句的基本语法如下:

switch (expression) {
    case constant1:
        // 代码块 1
        break;
    case constant2:
        // 代码块 2
        break;
    ...
    default:
        // 默认代码块
        break;
}

switch 语句的工作原理是这样的:首先计算 expression 的值,然后将这个值与每个 case 后面的常量值进行比较。如果找到匹配的 case,程序就会执行该 case 下的代码块,直到遇到 break 语句或者 switch 语句结束。如果没有匹配的 case,则执行 default 块中的代码(如果有的话)。
 

让我们看一个具体的例子来理解 switch 语句的使用:

#include <stdio.h>

int main() {
    int day = 4;
    
    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");
            break;
    }
    
    return 0;
}

这个程序的输出结果是:

星期四

在这个例子中,day 变量的值是 4,所以程序执行 case 4 下的代码,打印出 "星期四"。


使用 switch case 语句时,需要注意以下几点:


有时,我们可能想要多个 case 共享同一段代码,这种情况下,我们可以省略中间的 break 语句,如下所示:

#include <stdio.h>

int main() {
    char grade = 'B';
    
    switch (grade) {
        case 'A':
        case 'B':
        case 'C':
            printf("及格\n");
            break;
        case 'D':
        case 'F':
            printf("不及格\n");
            break;
        default:
            printf("无效的成绩\n");
            break;
    }
    
    return 0;
}

这个程序的输出结果是:

及格

在这个例子中,'A'、'B' 和 'C' 共享同一个代码块,'D' 和 'F' 共享另一个代码块。这种技巧可以让我们更灵活地使用 switch 语句。
 

switch 语句还可以嵌套使用,即在一个 switch 语句内部再使用另一个 switch 语句。虽然这种做法是合法的,但可能会使代码变得复杂难懂,因此应谨慎使用。
 

总的来说,switch 语句是C语言中一个非常有用的控制结构,它可以使多路分支的代码更加清晰和高效。然而,switch 语句也有其局限性,比如只能用于等值判断,不能用于范围判断。在实际编程中,我们需要根据具体情况选择使用 if-else 还是 switch 语句。

推荐阅读