Оператор break
Прерывает выполнение ближайшего цикла for, цикла while или цикла do-while, а также оператора switch.
Используется, когда иным способом прервать цикл с помощью выражения условия и условных операторов неудобно.
Синтаксис
attr-spec-seq (необязательно) break ; |
| attr-spec-seq | - | (C23) необязательный список атрибутов, применяемых к оператору break |
Оператор появляется только внутри операторного блока тела цикла (while, do-while, for) или внутри операторного блока switch.
Объяснение
После этого оператора управление передаётся оператору или объявлению, непосредственно следующему за вложенным циклом или оператором switch, как если бы это было сделано с помощью goto.
Ключевые слова
Примечания
Оператор 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