Пространства имён
Варианты
Действия

Инструкция break

Материал из cppreference.com

Вызывает завершение охватывающего цикла 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 Инструкция break (стр. 111)
  • Стандарт C11 (ISO/IEC 9899:2011):
  • 6.8.6.3 Инструкция break (стр. 153)
  • Стандарт C99 (ISO/IEC 9899:1999):
  • 6.8.6.3 Инструкция break (стр. 138)
  • Стандарт C89/C90 (ISO/IEC 9899:1990):
  • 3.6.6.3 Инструкция break

См. также

[[fallthrough]](C23) показывает, что проход из предыдущей метки case был умышленный и не должен диагносцироваться компилятором, который предупреждает о проходе
Документация C++ по break statement