Namespaces
Variants

do-while loop

From cppreference.net

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 do-while établit une portée de bloc : tout identifiant introduit dans l' expression sort de la portée après 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

do , while

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