c语言中switch的用法

admin 35 0

C语言中switch语句的用法详解

在C语言中,switch语句是一种多路选择结构,它允许程序根据不同的条件执行不同的代码块,与if-else语句相比,switch语句更适用于多个选项之间的选择,且代码更加简洁易读,下面将详细介绍switch语句的用法。

一、switch语句的基本结构

switch语句的基本结构如下:

```c

switch (expression) {

case constant1:

// 执行代码块1

break;

case constant2:

// 执行代码块2

...

default:

// 默认执行代码块

}

其中,expression是需要进行比较的表达式,可以是变量或表达式。case后面跟着一个常量或字面值,表示与expression进行比较的值。如果expression的值与某个case后面的常量值相等,则执行对应的代码块。如果expression的值与所有case后面的常量值都不相等,则执行default后面的代码块。

二、switch语句的执行流程

当执行到switch语句时,首先计算expression的值。然后与每个case后面的常量值进行比较,找到第一个与之相等的case。如果找到匹配的case,则执行该case后面的代码块。如果没有找到匹配的case,则执行default后面的代码块。执行完对应的代码块后,通过break语句跳出switch语句。

需要注意的是,每个case后面的代码块必须以break语句结尾,否则程序会继续执行下一个case的代码块,直到遇到break语句或switch语句结束为止。如果没有break语句,程序会一直执行下去,直到遇到break语句或switch语句结束为止,这被称为“贯穿”现象。

三、switch语句的注意事项

1. case后面的常量必须是整型或字符型常量,不能是浮点型或字符串类型。
2. case后面的常量必须是唯一的,不能有重复的值。
3. 每个case后面必须有一个break语句,否则会发生贯穿现象。
4. 如果没有任何case与expression的值匹配,则执行default后面的代码块。如果省略了default子句,且没有case与expression的值匹配,则整个switch语句没有执行任何操作。
5. switch语句中的每个case和default子句都是可选的,可以根据需要添加或删除。
6. switch语句可以嵌套在其他if-else语句中,形成更复杂的逻辑结构。
7. 在使用switch语句时,要注意避免出现死循环或死路径的情况。例如,在某个case后面没有break语句,或者没有default子句而expression的值又不匹配任何一个case的情况。

四、示例代码

下面是一个使用switch语句的示例代码:


```c
#include <stdio.h>

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

在这个示例中,根据变量grade的值的不同,执行不同的输出语句,如果grade的值为'A',则输出"优秀",如果grade的值为'B'或'C',则输出"良好",如果grade的值为'D',则输出"及格",如果grade的值为'F',则输出"不及格",如果grade的值不是以上任何一个字母,则输出"无效的成绩"。