ZetCode

C switch

最后修改于 2023 年 1 月 9 日

C switch 教程演示了如何使用 switch 语句来控制 C 语言的流程。

Switch 语句

switch 语句是一种控制语句,用于改变程序的流程。它提供了一种基于变量或表达式的值将执行分派到不同代码部分的方法。switch 语句是多个 if/else 语句的替代方案。

switch 语句的主体可以有任意数量的 case 标签。标签会根据给定值进行评估。在 switch 中提供的表达式必须产生一个常量值。

表达式被评估一次,并与每个 case 标签的值进行比较。如果找到匹配项,则执行匹配标签之后的语句。

case 标签通常以 break 语句结束;它终止 switch 语句的执行。如果省略,则执行将进入下一个 case 标签。

当找不到匹配项时,会执行可选的 default 语句。

C switch 示例

在下面的示例中,我们使用 switch 语句根据用户输入做出决定。

switch_stm.c
#include <stdio.h>

int main() {

    printf("Are you sure to continue? y/n ");

    char c;

    scanf(" %c", &c);

    switch (c) {

        case 'y':

            printf("program continues\n");
        break;

        case 'n':
            printf("program stops\n");
        break;

        default:
            printf("wrong option\n");
    }
}

我们被问到是否要继续,并提供两个选项:y 或 n。

char c;

scanf(" %c", &c);

我们使用 scanf 读取用户的输入。`%c` 格式说明符前面的空格字符会跳过任何前导空格。

case 'y':

    printf("program continues\n");
break;

如果我们选择了 'y',则执行此分支。

case 'n':
    printf("program stops\n");
break;

如果我们选择了 'n',则执行此分支。

default:
    printf("wrong option\n");

对于任何其他选项,我们执行此分支。

$ ./switch_stm
Are you sure to continue? y/n y
program continues

C switch 示例 2

下一个示例展示了如何为多个选项获得相同的输出。

switch_stm2.c
#include <stdio.h>

enum week { Mon, Tue, Wed, Thu, Fri, Sat, Sun };

int main() {

    enum week day = Wed;

    switch (day) {

        case Mon:
        case Tue:
        case Wed:
        case Thu:
        case Fri:
            printf("Weekday\n");
            break;

        case Sat:
        case Sun:
            printf("Weekend\n");
            break;
    }
}

如果我们省略 break 语句,执行将“ caída”到下一个 case。这可以用于将选项分组以获得单个输出。

case Mon:
case Tue:
case Wed:
case Thu:
case Fri:
    printf("Weekday\n");
    break;

周一到周五是工作日。

$ ./switch_stm2
Weekday

在本文中,我们介绍了 C switch 语句。