Namespaces
Variants

break statement

From cppreference.net

导致所在的 for while do-while 循环或 switch 语句 终止。

当使用条件表达式和条件语句来终止循环显得不便时使用。

目录

语法

属性说明序列  (可选) break ;
attr-spec-seq - (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循环的输出。
    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 break 语句 (p: 111)
  • C11 标准 (ISO/IEC 9899:2011):
  • 6.8.6.3 break 语句 (p: 153)
  • C99标准(ISO/IEC 9899:1999):
  • 6.8.6.3 break语句(页码:138)
  • C89/C90 标准 (ISO/IEC 9899:1990):
  • 3.6.6.3 break 语句

参见

(C23)
表示从前一个 case 标签的直落行为是故意的,不应被会对直落行为发出警告的编译器诊断
(属性说明符)
C++ 文档 关于 break 语句