Namespaces
Variants

break statement

From cppreference.net

外側の for ループ、 while ループ、または do-while ループ、あるいは switch文 を終了させます。

条件式と条件文を使用してループを終了することが不適切な場合に使用されます。

目次

構文

attr-spec-seq  (optional) break ;
attr-spec-seq - (C23) break 文に適用される 属性 のオプションリスト

ループ本体の statement 内( while do-while for )または switch statement 内でのみ使用可能です。

説明

この文の後、制御は囲んでいるループまたはswitchの直後の文または宣言に移ります。あたかも goto によって行われたかのように。

キーワード

break

注記

break文を使用して複数のネストされたループから抜け出すことはできません。この目的には goto statement を使用することができます。

#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");
    // これら2つのネストされた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文 (p: 138)
  • C89/C90標準 (ISO/IEC 9899:1990):
  • 3.6.6.3 break文

関連項目

(C23)
前のcaseラベルからのフォールスルーが意図的であり、フォールスルーを警告するコンパイラによって診断されるべきではないことを示す
(属性指定子)
C++ documentation for break statement