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

Условно выполняет оператор повторно (по крайней мере один раз).

Содержание

Синтаксис

attr  (необязательно) do statement while ( expression );
attr - (since C++11) любое количество атрибутов
expression - выражение expression
statement - инструкция statement (обычно составная инструкция)

Объяснение

Когда управление достигает оператора do , его statement будет выполнен безусловно.

Каждый раз, когда statement завершает своё выполнение, expression будет вычисляться и контекстно преобразовываться в bool . Если результат равен true , statement будет выполнен снова.

Если цикл необходимо прервать внутри statement , в качестве завершающей инструкции можно использовать break statement .

Если текущую итерацию необходимо прервать внутри statement , можно использовать continue statement в качестве сокращения.

Примечания

В рамках гарантии прогресса C++ поведение является неопределённым , если цикл не являющийся тривиальным бесконечным циклом (начиная с C++26) без наблюдаемого поведения не завершается. Компиляторам разрешено удалять такие циклы.

Ключевые слова

do , while

Пример

#include <algorithm>
#include <iostream>
#include <string>
int main()
{
    int j = 2;
    do // составной оператор является телом цикла
    {
        j += 2;
        std::cout << j << ' ';
    }
    while (j < 9);
    std::cout << '\n';
    // распространённый случай использования цикла do-while
    std::string s = "aba";
    std::sort(s.begin(), s.end());
    do std::cout << s << '\n'; // выражение является телом цикла
    while (std::next_permutation(s.begin(), s.end()));
}

Вывод:

4 6 8 10
aab
aba
baa

Смотрите также