生信喵 发表于 2024-5-16 16:18:25

switch语句的break重要性

# 背景

学习C语言语法,switch时对于case的使用存在疑问,如下:

```
// 009.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include "stdlib.h"
//使用它得加个头文件#include<stdlib.h>

int _tmain(int argc, _TCHAR* argv[])
{
        int a = 1;
        switch(a)
        {
        case 1:
                printf("1111\n");
                break;
        case 2:
                printf("2222\n");
                break;
        case 3:
                printf("3333\n");
                break;
        default:
                printf("????\n");
        }

        system("pause");
        return 0;
}
```

以上代码输出1111,因为判断了符合1的情况。
当我们注释掉case1的braek后

```
        case 1:
                printf("1111\n");
                //break;
```

输出1111和2222.
当注释掉case1和case2的break后

```
        case 1:
                printf("1111\n");
                //break;
        case 2:
                printf("2222\n");
                //break;
```

输出1111,2222和3333。

# 原因

这是switch语句的语法。除了符合case的判断外。

尽管只符合case1,我们单独注释break,也会继续执行case2和3的输出。

在C语言中,switch语句会匹配第一个符合条件的case,并且一旦进入某一个case,如果没有break语句,程序会继续执行下面所有case的语句,直到遇到break语句或者switch语句结束。所以即使没有break语句,程序也会继续执行下面的case语句。
页: [1]
查看完整版本: switch语句的break重要性