C语言 switch-case语句

  • Post category:C

当我们需要对某个变量或表达式的取值进行比较时,可以使用C语言中的switch-case语句来实现。switch语句接受一个表达式作为条件,在匹配到对应值的case语句时执行相应的代码,并且可以配合default语句提供一个默认执行的选项。

switch语句的基本语法如下:

switch (expression) {
    case value1:
        // code block
        break;
    case value2:
        // code block
        break;
    ...
    default:
        // code block
        break;
}

其中,expression是用于比较的表达式,value1value2等是可能的值(或表达式)。代码块中的内容通常由多条语句组成,可以使用break语句来结束这个case并跳出整个switch语句。

下面展示两个示例。

示例1

#include <stdio.h>

int main() {
    int num = 2;

    switch(num) {
        case 1:
            printf("num is 1\n");
            break;
        case 2:
            printf("num is 2\n");
            break;
        case 3:
            printf("num is 3\n");
            break;
        default:
            printf("num is not 1, 2, or 3\n");
            break;
    }

    return 0;
}

这段代码的输出结果是:

num is 2

这是因为num的值为2,匹配到了case 2语句,并且输出了"num is 2"

示例2

#include <stdio.h>

int main() {
    char c = 'A';

    switch(c) {
        case 'A':
            printf("c is A\n");
            break;
        case 'B':
            printf("c is B\n");
            break;
        case 'C':
            printf("c is C\n");
            break;
        default:
            printf("c is not A, B, or C\n");
            break;
    }

    return 0;
}

这段代码的输出结果是:

c is A

这是因为c的值为'A',匹配到了case 'A'语句,并且输出了"c is A"

需要注意的是,switch语句只能用于判断整数类型或字符类型的值,而不能判断浮点数、字符串或其他数据类型的值。如果需要进行更复杂的比较,可以在case语句中编写多个条件判断。如果不在case语句中使用break语句,则会由于穿透效应,同时执行匹配到的case以及后面的所有case。而default语句并不是必须的,可以根据实际需要选择是否加入。