Ejecuta un declaración repetidamente, hasta que el valor de condición se convierte false. La prueba se realiza antes de cada iteración.

Sintaxis

atributo(Opcional)while (condición)declaración
atributo(C++11) cualquier numero de attributes
condición cualquier expresión que sea contextualmente convertible a bool o una declaración de una sola variable con un inicializador de llaves o igual. Esta expresión se evalúa antes de cada iteración, y si da como resultado false, se sale del bucle. Si se trata de una declaración, el inicializador se evalúa antes de cada iteración, y si el valor de la variable declarada se convierte en falsese sale del bucle.
declaración cualquier declaración, normalmente una declaración compuesta, que es el cuerpo del bucle

Explicación

Si declaración es una declaración única (no una declaración compuesta), el alcance de las variables declaradas en ella se limita al ciclo while como si fuera una declaración compuesta, en otras palabras,

while(--x >=0)int i;// i goes out of scope

es lo mismo que.

while(--x >=0)int i;// i goes out of scope

Si condición es una declaración como T t = xla variable declarada solo tiene alcance en el cuerpo del ciclo, y se destruye y se recrea en cada iteración, en otras palabras, el ciclo while es equivalente a.

label:// start of condition scope
    T t = x;if(t)
        statement
        goto label;// calls the destructor of t

Si es necesario terminar la ejecución del ciclo en algún momento, se puede usar la instrucción break como declaración de terminación.

Si la ejecución del ciclo debe continuar al final del cuerpo del ciclo, la instrucción continuar se puede usar como atajo.

notas

Como parte de la garantía de avance de C++, el comportamiento no está definido si un bucle que no tiene un comportamiento observable (no realiza llamadas a funciones de E/S, no accede a objetos volátiles ni realiza operaciones atómicas o de sincronización) no finaliza. Los compiladores pueden eliminar dichos bucles.

Palabras clave

while.

Ejemplo

#includeintmain()// while loop with a single statementint i =0;while(i <10)
         i++;
    std::cout << i <<'n';// while loop with a compound statementint j =2;while(j <9)
        std::cout << j <<' ';
        j +=2;
    std::cout <<'n';// while loop with a declaration conditionchar cstr[]="Hello";int k =0;while(char c = cstr[k++])
       std::cout << c;
   std::cout <<'n';

Producción:

102468 
Hello

Ver también