# break 语句

< c‎ | language

导致外围 for 、 while 或 do-while 循环或 switch 语句终止。

在用条件表达式和条件语句终止循环显得笨拙时使用。

### 语法

属性说明符序列(可选) `break` `;` |  |

属性说明符序列 | - | (C23)可选的属性列表，应用到 `break` 语句

只出现在循环体（ while、 do-while、 for ）的 语句 内，或 switch 的 语句 内。

### 解释

此语句后，控制被转移到紧随整个循环或 switch 之后的声明或语句，如同由 goto 进行。

### 关键词

`break`

### 注解

`break` 语句不能用于打破多重嵌套循环。 goto 语句可用于此目的。

### 示例

    #include <stdio.h>

    int main(void)
    {
        int i = 2;
        switch (i) {
            case 1: printf("1");
            case 2: printf("2");   // i==2 ，故执行始于此 case 标号
            case 3: printf("3");
            case 4:
            case 5: printf("45");
                    break;         // 导致后续的 case 终止
            case 6: printf("6");
        }
        printf("\n");

        // 比较来自这二个循环嵌套的输出
        for (int j = 0; j < 2; j++)
            for (int k = 0; k < 5; k++)
                printf("%d%d ", j,k);
        printf("\n");
        for (int j = 0; j < 2; j++) {
            for (int k = 0; k < 5; k++) { // 只有此循环会由 break 退出
                if (k == 2) break;
                printf("%d%d ", j,k);
            }
        }
    }

输出：

    2345
    00 01 02 03 04 10 11 12 13 14
    00 01 10 11

### 引用

- C17 标准（ISO/IEC 9899:2018）：

  - 6.8.6.3 The break statement (p: 111)

- C11 标准（ISO/IEC 9899:2011）：

  - 6.8.6.3 The break statement (p: 153)

- C99 标准（ISO/IEC 9899:1999）：

  - 6.8.6.3 The break statement (p: 138)

- C89/C90 标准（ISO/IEC 9899:1990）：

  - 3.6.6.3 The break statement

### 参阅