Spec-Zone.ru › C++

break оператор

Завершает определённые охватывающие операторы.

Синтаксис

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

Пояснение

Операторы break должны быть вложены в один из следующих операторов:

  • операторы циклов (for, range-for, while или do-while)
  • операторы раскрытия (template for)
(начиная с C++26)
  • switch операторы

Выполнение оператора break приводит к завершению самого внутреннего из таких охватывающих операторов, после чего управление передаётся оператору, следующему за завершённым оператором (если таковой имеется).

Примечания

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

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

Ключевые слова

break

Пример

#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

Spec-Zone.ru

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