Namespaces
Variants

while loop

From cppreference.net

Exécute une instruction de manière répétée, jusqu'à ce que la valeur de l' expression devienne égale à zéro. Le test a lieu avant chaque itération.

Table des matières

Syntaxe

attr-spec-seq (optionnel) while ( expression ) instruction
expression - toute expression de type scalaire . Cette expression est évaluée avant chaque itération, et si elle est égale à zéro, la boucle est quittée.
statement - toute instruction , généralement une instruction composée, qui sert de corps à la boucle
attr-spec-seq - (C23) liste optionnelle d' attributs , appliquée à l'instruction de boucle

Explication

Une instruction 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 à zéro. La répétition se produit que le corps de la boucle soit atteint normalement ou via une instruction goto au milieu de l' instruction .

L'évaluation de expression a lieu avant chaque exécution de statement (sauf si on y accède par un goto). Si l'expression de contrôle doit être évaluée après le corps de la boucle, la boucle do-while peut être utilisée.

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 ; while ( true ) est toujours une boucle infinie.

Comme pour toutes les autres instructions de sélection et d'itération, l'instruction 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

while

Exemple

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
enum { SIZE = 8 };
int main(void)
{
    // trivial example
    int array[SIZE], n = 0;
    while(n < SIZE) array[n++] = rand() % 2;
    puts("Array filled!");
    n = 0;
    while(n < SIZE) printf("%d ", array[n++]);
    printf("\n");
    // classic strcpy() implementation
    // (copies a null-terminated string from src to dst)
    char src[] = "Hello, world", dst[sizeof src], *p = dst, *q = src;
    while((*p++ = *q++)) // double parentheses (that are not strictly necessary)
                         // used to suppress warnings, ensuring that this is an
                         // assignment (as opposed to a comparison) by intention,
                         // whose result is used as a truth value
        ; // null statement
    puts(dst);
}

Sortie :

Array filled!
1 0 1 1 1 1 0 0 
Hello, world

Références

  • Norme C17 (ISO/CEI 9899:2018) :
  • 6.8.5.1 L'instruction while (p: 109)
  • Norme C11 (ISO/IEC 9899:2011) :
  • 6.8.5.1 L'instruction while (p: 151)
  • Norme C99 (ISO/CEI 9899:1999) :
  • 6.8.5.1 L'instruction while (p: 136)
  • Norme C89/C90 (ISO/IEC 9899:1990) :
  • 3.6.5.1 L'instruction while

Voir aussi

Documentation C++ pour while loop