Namespaces
Variants

do - while loop

From cppreference.net
C++ language
General topics
Flow control
Conditional execution statements
Iteration statements (loops)
while
do-while
Jump statements
Functions
Function declaration
Lambda function expression
inline specifier
Dynamic exception specifications ( until C++17* )
noexcept specifier (C++11)
Exceptions
Namespaces
Types
Specifiers
constexpr (C++11)
consteval (C++20)
constinit (C++20)
Storage duration specifiers
Initialization
Expressions
Alternative representations
Literals
Boolean - Integer - Floating-point
Character - String - nullptr (C++11)
User-defined (C++11)
Utilities
Attributes (C++11)
Types
typedef declaration
Type alias declaration (C++11)
Casts
Memory allocation
Classes
Class-specific function properties
Special member functions
Templates
Miscellaneous

Ejecuta condicionalmente una sentencia repetidamente (al menos una vez).

Contenidos

Sintaxis

attr  (opcional) do sentencia while ( expresión );
attr - (since C++11) cualquier número de atributos
expression - una expresión
statement - una sentencia (normalmente una sentencia compuesta)

Explicación

Cuando el control alcanza una sentencia do , su statement se ejecutará incondicionalmente.

Cada vez que statement finaliza su ejecución, expression será evaluada y convertida contextualmente a bool . Si el resultado es true , statement será ejecutado nuevamente.

Si el bucle necesita ser terminado dentro de statement , una break statement puede ser usada como sentencia de terminación.

Si la iteración actual necesita ser terminada dentro de statement , se puede usar una continue statement como atajo.

Notas

Como parte de la garantía de progreso de C++, el comportamiento es indefinido si un bucle que no es un bucle infinito trivial (desde C++26) sin comportamiento observable no termina. Los compiladores tienen permitido eliminar dichos bucles.

Palabras clave

do , while

Ejemplo

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

Salida:

4 6 8 10
aab
aba
baa

Véase también

Documentación de C para do-while