Spec-Zone.ru › C

Оператор break

Прерывает выполнение ближайшего цикла for, цикла while или цикла do-while, а также оператора switch.

Используется, когда иным способом прервать цикл с помощью выражения условия и условных операторов неудобно.

Синтаксис

attr-spec-seq (необязательно) 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, so execution starts at this case label
        case 3: printf("3");
        case 4:
        case 5: printf("45");
                break;         // execution of subsequent cases is terminated
        case 6: printf("6");
    }
    printf("\n");
 
    // Compare outputs from these two nested for loops.
    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++) // only this loop is exited by 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 оператора

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/c/language/break

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API