do-while loop
Exécute une instruction de manière répétée jusqu'à ce que la valeur de la condition expression devienne fausse. Le test a lieu après chaque itération.
Table des matières |
Syntaxe
attr-spec-seq
(optionnel)
do
instruction
while (
expression
)
;
|
|||||||||
| attr-spec-seq | - | (C23) une liste optionnelle d' attributs , appliquée à l'instruction de boucle. |
| statement | - | toute instruction , généralement une instruction composée, qui constitue le corps de la boucle. |
| expression | - | toute expression de type scalaire . Cette expression est évaluée après chaque itération, et si elle est égale à zéro, la boucle est quittée. |
Explication
Une instruction do - while provoque l'exécution répétée de l' instruction (également appelée le corps de la boucle ) jusqu'à ce que l' expression (également appelée expression de contrôle ) soit égale à 0 . La répétition se produit que le corps de la boucle soit entré normalement ou via une instruction goto au milieu de l' instruction .
L'évaluation de expression a lieu après chaque exécution de statement (qu'elle soit entrée normalement ou par un goto ). Si l'expression de contrôle doit être évaluée avant le corps de la boucle, la boucle while ou la boucle for peuvent être utilisées.
Si l'exécution de la boucle doit être interrompue à un certain moment, l'instruction break peut être utilisée comme instruction de terminaison.
Si l'exécution de la boucle doit être poursuivie à la fin du corps de la boucle, l'instruction continue peut être utilisée comme raccourci.
Un programme avec une boucle infinie a un comportement indéfini si la boucle n'a aucun comportement observable (E/S, accès volatiles, opérations atomiques ou de synchronisation) dans aucune partie de son instruction ou expression . Cela permet aux compilateurs d'optimiser toutes les boucles non observables sans prouver qu'elles se terminent. Les seules exceptions sont les boucles où l' expression est une expression constante ; do { ... } while ( true ) ; est toujours une boucle infinie.
|
Comme pour toutes les autres instructions de sélection et d'itération, l'instruction
|
(depuis C99) |
Notes
Les expressions booléennes et les pointeurs sont souvent utilisées comme expressions de contrôle de boucle. La valeur booléenne false et la valeur de pointeur nul de tout type de pointeur sont égales à zéro.
Mots-clés
Exemple
#include <stdio.h> #include <stdlib.h> enum { SIZE = 8 }; int main(void) { // exemple trivial int array[SIZE], n = 0; do array[n++] = rand() % 2; // le corps de la boucle est une instruction d'expression unique while(n < SIZE); puts("Array filled!"); n = 0; do { // le corps de la boucle est une instruction composée printf("%d ", array[n]); ++n; } while (n < SIZE); printf("\n"); // la boucle de K&R itoa(). La boucle do-while est utilisée // car il y a toujours au moins un chiffre à générer int num = 1234, i=0; char s[10]; do s[i++] = num % 10 + '0'; // obtenir le chiffre suivant en ordre inverse while ((num /= 10) > 0); s[i] = '\0'; puts(s); }
Sortie possible :
Array filled! 1 0 1 1 1 1 0 0 4321
Références
- Norme C23 (ISO/IEC 9899:2024) :
-
- 6.8.6.3 L'instruction do (p: 156)
- Norme C17 (ISO/CEI 9899:2018) :
-
- 6.8.5.2 L'instruction do (p: 109)
- Norme C11 (ISO/IEC 9899:2011) :
-
- 6.8.5.2 L'instruction do (p: 151)
- Norme C99 (ISO/CEI 9899:1999) :
-
- 6.8.5.2 L'instruction do (p: 136)
- Norme C89/C90 (ISO/IEC 9899:1990) :
-
- 3.6.5.2 L'instruction do
Voir aussi
|
Documentation C++
pour
do
-
while
boucle
|