一文彻底搞清楚C语言的条件语句的Switch语句

简介: 本文详细介绍了C语言中的switch语句,包括其语法格式、运行流程、示例代码及注意事项。switch语句不仅使多分支选择更加清晰易读,还能在某些情况下提升性能。通过具体实例,如判断月份天数和数字转星期,帮助读者更好地理解和应用这一控制结构。

程序员Feri一名12年+的程序员,做过开发带过团队创过业,擅长Java、鸿蒙、嵌入式、人工智能等开发,专注于程序员成长的那点儿事,希望在成长的路上有你相伴!君志所向,一往无前!


1.switch语句

C语言的条件语句除了上一篇写的if语句还有switch语句。

在 C 语言中,switch 语句是一种强大的控制流结构,它为我们提供了一种简洁而有效的方式,根据表达式的值在多个代码分支中进行选择。

为什么有了if语句还需要掌握switch语句呢?

  1. 当有多个基于同一变量的不同值进行选择时,switch 语句可以使代码更加清晰易读。
  2. 在某些编译器和特定条件下,switch 语句可能比多个 else if 语句的性能更好。
  3. 对于有多个 else if 语句的情况,使用 switch 语句可以减少代码的冗余
  4. switch 语句为多分支的选择提供了一种结构化的方式,使代码的逻辑结构更加清晰,易于理解和修改

2.switch语法格式

switch (expression) {
    case value1:
        // 代码块 1
        break;
    case value2:
        // 代码块 2
        break;
    // 可以有多个 case 语句
    default:
        // 代码块 n
        break;
}
  • expression:这是一个表达式,其结果将与每个 case 后面的 value 进行比较。这个表达式通常是整数类型(包括字符型,因为字符在 C 语言中本质上是整数)或枚举类型。

  • case valueN:这是一个分支标签,当 expression 的结果等于 valueN 时,程序将从该标签处开始执行代码。

  • break:当程序执行到 break 语句时,它将跳出 switch 语句,继续执行 switch 语句后面的代码。如果没有 break,程序将继续执行下一个 case 语句的代码,这被称为 "fall-through" 特性。

  • default:这是一个可选的部分,当 expression 的值与所有 case 的 value 都不匹配时,将执行 default 部分的代码。

3.switch运行流程

首先,计算 switch 语句中的 expression 的值。

然后,将 expression 的值与每个 case 后面的 value 进行比较。

一旦找到匹配的 case,程序将从该 case 开始执行代码。

如果没有 break 语句,程序将继续执行后续的 case 语句,直到遇到 break 或 switch 语句结束。

如果没有找到匹配的 case 且存在 default 部分,将执行 default 部分的代码;

如果没有 default 部分,程序将直接跳出 switch 语句。

4.示例

我们写2个,一个用来判断输入月份多少天的,另一个用来把数字转换为对应的星期的。

//switch语句 月份多少天
void f5(){
    int month;
    printf("请输入月份(1-12):");
    scanf("%d", &month);

    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("输入错误,请输入 1-12 之间的数字\n");
    }
}
//switch语句 数字-转换为 星期
void f6(){
     int day;
    printf("请输入一个数字 (1-7) 表示星期几: ");
    scanf("%d", &day);

    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("输入错误,请输入 1-7 之间的数字\n");
            break;
    }
}

5.fall-through

switch 语句中的 "fall-through" 特性

"fall-through" 是 switch 语句的一个特性,当 case 语句中没有 break 时,程序将继续执行下一个 case 的代码。

6.注意事项

(一)break 语句的重要性

忘记添加 break 语句可能导致意外的程序行为。在大多数情况下,你需要在每个 case 的代码块末尾添加 break 语句,以确保程序执行完当前 case 后跳出 switch 语句。

(二)default 语句的使用

default 语句是可选的,但使用它可以提供一个默认的处理逻辑,当没有 case 匹配时执行。
default 语句可以放在 switch 语句的任何位置,但通常将其放在最后,以符合代码的阅读习惯。

(三)case 标签的唯一性

每个 case 的 value 必须是唯一的,不能重复。

(四)case 语句的顺序

一般情况下,case 语句的顺序不会影响程序的正确性,但对于有重叠范围的 case 值,顺序会影响执行结果。

7.使用建议

1、为养成好习惯,最好在每一条的 case 语句中的后面都加上一个 break

2、多个 case 语句可以共用一条(或者多条)执行语句

3、case 和 default 没有强制的位置关系,就是说 default 不一定要放在
最后,放在哪里都可以

好啦,关于C语言的条件语句,我们就搞完了,恭喜你,在嵌入式开发的路上又前进了一大步!

相关文章
|
11月前
|
程序员 Python
16.C语言:用switch语句实现多分支选择结构
16.C语言:用switch语句实现多分支选择结构
125 0
|
11月前
|
存储 C语言
C语言实现十进制转化为十六进制-------数组,switch语句,while循环语句
C语言实现十进制转化为十六进制-------数组,switch语句,while循环语句
199 0
|
2月前
|
人工智能 Java 程序员
一文彻底搞定C语言中的条件语句if
本文介绍了C语言中的条件语句,如if、if-else和switch,帮助读者理解如何根据不同的条件执行相应的代码块。通过实例讲解了if语句的基本用法及其复杂形式,并提供了编写条件语句的最佳实践建议。君志所向,一往无前!
85 0
一文彻底搞定C语言中的条件语句if
|
11月前
|
存储 程序员 C语言
C语言中的嵌套语句与Switch语句的深入解析
C语言中的嵌套语句与Switch语句的深入解析
145 1
|
11月前
|
程序员 C语言
C语言中的条件语句技术详解
C语言中的条件语句技术详解
206 2
|
9月前
|
存储 编译器 C语言
c语言选择结构的switch语句的细节
c语言选择结构的switch语句的细节
|
10月前
|
C语言
C语言条件判断:if、else、else if 和 switch 详解
C语言条件判断:if、else、else if 和 switch 详解
909 0
|
11月前
|
存储 C语言
C语言中的switch语句编程
C语言中的switch语句编程
276 0
|
11月前
|
编译器 C语言 C++
【C语言】分支和循环 ---- if、switch、while、for、goto语句, 理解getchar和putchar函数
【C语言】分支和循环 ---- if、switch、while、for、goto语句, 理解getchar和putchar函数
91 0
|
11月前
|
Java C语言 C++
C语言中用switch语句实现多分支选择结构
C语言中用switch语句实现多分支选择结构
397 0