Namespaces
Variants

break statement

From cppreference.net
C++ language
General topics
Flow control
Conditional execution statements
Iteration statements (loops)
Jump statements
continue - break
Functions
Function declaration
Lambda function expression
inline specifier
Dynamic exception specifications ( until C++17* )
noexcept specifier (C++11)
Exceptions
Namespaces
Types
Specifiers
constexpr (C++11)
consteval (C++20)
constinit (C++20)
Storage duration specifiers
Initialization
Expressions
Alternative representations
Literals
Boolean - Integer - Floating-point
Character - String - nullptr (C++11)
User-defined (C++11)
Utilities
Attributes (C++11)
Types
typedef declaration
Type alias declaration (C++11)
Casts
Memory allocation
Classes
Class-specific function properties
Special member functions
Templates
Miscellaneous

Provoque la terminaison de la boucle for , range-for , while ou do-while englobante ou de l'instruction switch .

Utilisé lorsqu'il est autrement difficile de terminer la boucle en utilisant l'expression conditionnelle et les instructions conditionnelles.

Table des matières

Syntaxe

attr  (facultatif) break ;
attr - (since C++11) n'importe quel nombre d' attributs

Explication

N'apparaît que dans la instruction du corps d'une boucle ( while , do-while , for ) ou dans l' instruction d'un switch . Après cette instruction, le contrôle est transféré à l'instruction suivant immédiatement la boucle ou le switch englobant. Comme pour toute sortie de bloc, tous les objets de stockage automatique déclarés dans l'instruction composée englobante ou dans la condition d'une boucle/switch sont détruits, dans l'ordre inverse de leur construction, avant l'exécution de la première ligne suivant la boucle englobante.

Notes

Une instruction break ne peut pas être utilisée pour sortir de plusieurs boucles imbriquées. L' instruction goto peut être utilisée à cette fin.

Mots-clés

break

Exemple

#include <iostream>
int main()
{
    int i = 2;
    switch (i)
    {
        case 1: std::cout << "1";   // <---- peut générer un avertissement : fall through
        case 2: std::cout << "2";   // l'exécution commence à cette étiquette case (+avertissement)
        case 3: std::cout << "3";   // <---- peut générer un avertissement : fall through
        case 4:                     // <---- peut générer un avertissement : fall through
        case 5: std::cout << "45";  //
                break;              // l'exécution des instructions suivantes est terminée
        case 6: std::cout << "6";
    }
    std::cout << '\n';
    for (char c = 'a'; c < 'c'; c++)
    {
        for (int i = 0; i < 5; i++)      // seule cette boucle est affectée par break
        {                                //
            if (i == 2)                  //
                break;                   //
            std::cout << c << i << ' ';  //
        }
    }
    std::cout << '\n';
}

Sortie possible :

2345
a0 a1 b0 b1

Voir aussi

(C++17)
indique que la chute depuis l'étiquette de cas précédente est intentionnelle et ne devrait pas être diagnostiquée par un compilateur qui avertit sur les chutes
(spécificateur d'attribut)