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

Оператор break

Материал из cppreference.com
< cpp‎ | language
 
 
 
Инструкции
Метки
метка : оператор
Операторы выражений
выражение ;
Составные операторы
{ оператор... }
Операторы выбора
if
switch
Операторы итерирования
while
do-while
for
диапазонный for(C++11)
Операторы переходов
break
continue
return
goto
Операторы объявления
объявление ;
Блоки try
try составной-оператор последовательность-обработчиков
Транзакционная память
synchronized, atomic_commit, и т.д. (ТС TM)
 

Вызывает прерывание охватывающих циклов for, диапазонный-for, while или do-while или оператора switch.

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

Содержание

[править] Синтаксис

атрибуты (необязательно) break ;
атрибуты (начиная с C++11) любое количество атрибутов

[править] Объяснение

После этого оператора управление передается оператору, непосредственно следующему за охватывающим циклом или switch. Как и в случае выхода из любого блока видимости, все автоматически хранимые объекты, объявленные в охватывающем составном операторе или в условии цикла/switch, уничтожаются в порядке, обратном построению, перед выполнением первой строки, следующей за охватывающим циклом.

[править] Ключевые слова

break

[править] Примечание

Оператор break нельзя использовать для выхода из нескольких вложенных циклов. Для этой цели можно использовать оператор goto.

[править] Пример

#include <iostream>
 
int main()
{
    int i = 2;
    switch (i) {
        case 1: std::cout << "1";   //<---- возможно предупреждение: провал через
        case 2: std::cout << "2";   //выполнение начинается с этой метки case
                                    //(+предупреждение)
        case 3: std::cout << "3";   //<---- возможно предупреждение: провал через
        case 4:                     //<---- возможно предупреждение: провал через
        case 5: std::cout << "45";  //
                break;              //выполнение последующих операторов прекращается
        case 6: std::cout << "6";
    }
 
    std::cout << '\n';
 
    for (char c = 'a'; c < 'c'; c++)
    {
        for (int i = 0; i < 5; i++)      // только этот цикл зависит от break
        {
            if (i == 2) break;           //
            std::cout << c << i << ' ';  //
        }
    }
    std::cout << '\n';
}

Возможный вывод:

2345
a0 a1 b0 b1

[править] Смотрите также

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