while
loop
Exécute conditionnellement une instruction de manière répétée.
Table des matières |
Syntaxe
attr
(facultatif)
while (
condition
)
instruction
|
|||||||||
| attr | - | (since C++11) n'importe quel nombre d' attributs |
| condition | - | une condition |
| statement | - | une instruction (généralement une instruction composée) |
Condition
Une condition peut être soit une expression soit une déclaration simple .
|
(depuis C++26) |
- S'il peut être résolu syntaxiquement comme une expression, il est traité comme une expression. Sinon, il est traité comme une déclaration qui n'est pas une déclaration de décomposition structurée (depuis C++26) .
Lorsque le contrôle atteint la condition, celle-ci produira une valeur, qui est utilisée pour déterminer si statement sera exécuté.
Expression
Si condition est une expression, la valeur qu'elle produit est la valeur de l'expression convertie contextuellement en bool . Si cette conversion est mal formée, le programme est mal formé.
Déclaration
Si condition est une déclaration simple, la valeur qu'elle produit est la valeur de la variable de décision (voir ci-dessous) convertie contextuellement en bool . Si cette conversion est mal formée, le programme est mal formé.
Déclaration non structurée de liaison
La déclaration comporte les restrictions suivantes :
- Conforme syntaxiquement à la forme suivante :
|
(jusqu'en C++11) |
|
(depuis C++11) |
- Le déclarateur ne peut pas spécifier une fonction ou un tableau .
- La séquence de spécificateurs de type (jusqu'en C++11) séquence de spécificateurs de déclaration ne peut contenir que des spécificateurs de type et constexpr , et elle (depuis C++11) ne peut pas définir une classe ou une énumération .
La variable de décision de la déclaration est la variable déclarée.
Déclaration de liaison structuréeLa déclaration présente les restrictions suivantes :
La variable de décision de la déclaration est la variable inventée e introduite par la déclaration . |
(depuis C++26) |
Explication
Une while instruction est équivalente à
/* label */
:
|
|||||||||
Si condition est une déclaration, la variable qu'elle déclare est détruite et recréée à chaque itération de la boucle.
Si la boucle doit être terminée au sein de statement , une break statement peut être utilisée comme instruction de terminaison.
Si l'itération actuelle doit être terminée au sein de statement , une continue statement peut être utilisée comme raccourci.
Notes
Indépendamment du fait que statement soit une instruction composée, elle introduit toujours une portée de bloc . Les variables déclarées dans celle-ci ne sont visibles que dans le corps de la boucle, en d'autres termes,
while (--x >= 0) int i; // i sort de la portée
est le même que
while (--x >= 0) { int i; } // i sort du scope
Dans le cadre de la garantie de progression du C++, le comportement est indéfini si une boucle qui n'est pas une boucle infinie triviale (depuis C++26) sans comportement observable ne se termine pas. Les compilateurs sont autorisés à supprimer de telles boucles.
Mots-clés
Exemple
#include <iostream> int main() { // boucle while avec une instruction unique int i = 0; while (i < 10) i++; std::cout << i << '\n'; // boucle while avec une instruction composée int j = 2; while (j < 9) { std::cout << j << ' '; j += 2; } std::cout << '\n'; // boucle while avec une condition de déclaration char cstr[] = "Hello"; int k = 0; while (char c = cstr[k++]) std::cout << c; std::cout << '\n'; }
Sortie :
10 2 4 6 8 Hello
Voir aussi
|
Documentation C
pour
while
|