break оператор
Завершает определённые охватывающие операторы.
Синтаксис
attr (необязательно) break ; |
| attr | - | (начиная с C++11) любое количество атрибутов |
Пояснение
Операторы break должны быть вложены в один из следующих операторов:
-
операторы циклов (
for, range-for,whileилиdo-while)
| (начиная с C++26) |
-
switchоператоры
Выполнение оператора break приводит к завершению самого внутреннего из таких охватывающих операторов, после чего управление передаётся оператору, следующему за завершённым оператором (если таковой имеется).
Примечания
Как и при любом выходе из блока, все объекты с автоматической длительностью хранения, объявленные в охватывающем составном операторе или в условии цикла/оператора switch, уничтожаются в порядке, обратном порядку их создания, до выполнения первой строки после охватывающего цикла.
Оператор break нельзя использовать для выхода из нескольких вложенных циклов. Для этой цели можно использовать оператор goto.
Ключевые слова
Пример
#include <iostream>
int main()
{
int i = 2;
switch (i)
{
case 1: std::cout << "1"; // <---- maybe warning: fall through
case 2: std::cout << "2"; // execution starts at this case label (+warning)
case 3: std::cout << "3"; // <---- maybe warning: fall through
case 4: // <---- maybe warning: fall through
case 5: std::cout << "45"; //
break; // execution of subsequent statements is terminated
case 6: std::cout << "6";
}
std::cout << '\n';
for (char c = 'a'; c < 'c'; c++)
{
for (int i = 0; i < 5; i++) // only this loop is affected by break
{ //
if (i == 2) //
break; //
std::cout << c << i << ' '; //
}
}
std::cout << '\n';
}
Возможный вывод:
2345 a0 a1 b0 b1
См. также
[[fallthrough]](C++17) | указывает, что переход к следующей метке case из предыдущей метки case является намеренным, и компилятор не должен выдавать предупреждение, если он предупреждает о проваливании (спецификатор атрибута) |
Документация по C для break |
|
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/language/break