Espacios de nombres
Variantes
Acciones

Bucle do-while

De cppreference.com
< cpp‎ | language

Ejecuta repetidamente una instrucción, hasta que el valor de la expresión se hace falsa. La comprobación tiene lugar después de cada iteración.

Contenido

[editar] Sintaxis

atrib(opcional) do instrucción while ( expresión ) ;
atrib - (desde C++11) cualquier número de atributos
expresión - cualquier expresión que es contextualmente convertible a bool. Se evalúa esta expresión después de cada iteración, y si se obtiene el valor false, se sale del bucle.
instrucción - cualquier instrucción, normalmente una instrucción compuesta, que es el cuerpo del bucle

[editar] Explicación

Instrucción siempre se ejecuta al menos una vez, incluso si la expresión siempre tiene un valor falso. Si no debe ejecutarse en este caso, se puede usar un bucle while o for.

Si se necesita terminar la ejecución del bucle en algún punto, se puede usar una instrucción break como instrucción de terminación.

Si se necesita que la ejecución del bucle continúe al final del cuerpo del bucle, se puede usar una instrucción continue como cortocircuito.

[editar] Notas

Como parte de la garantía de progreso de avance de C++, el comportamiento no está definido si un bucle que no tiene 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 termina. Los compiladores pueden eliminar dichos bucles.

[editar] Palabras clave

do, while

[editar] Ejemplo

#include <iostream>
#include <algorithm>
#include <string>
 
int main()
{
    int j = 2;
    do { // el cuerpo del bucle es una instrucción compuesta
        j += 2;
        std::cout << j << " ";
    } while (j < 9);
    std::cout << '\n';
    // situación común cuando se usa el bucle do-while
    std::string s = "aba";
    std::sort(s.begin(), s.end());
    do std::cout << s << '\n'; // instrucción de expresión es el cuerpo del bucle
    while(std::next_permutation(s.begin(), s.end()));
}

Salida:

4 6 8 10
aab
aba
baa

[editar] Véase también

Documentación de C para do-while