break 语句

来自cppreference.com
< c‎ | language


导致外围 forwhiledo-while 循环或 switch 语句终止。

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

语法

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

只出现在循环体(whiledo-whilefor)的 语句 内,或 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 (第 111 页)
  • C11 标准(ISO/IEC 9899:2011):
  • 6.8.6.3 The break statement (第 153 页)
  • C99 标准(ISO/IEC 9899:1999):
  • 6.8.6.3 The break statement (第 138 页)
  • C89/C90 标准(ISO/IEC 9899:1990):
  • 3.6.6.3 The break statement

参阅

[[fallthrough]](C23) 指定从前一个 case 标号发生直落是有意的,且不应被会警告直落的编译器进行诊断
(属性指示符)