Spec-Zone.ru › C++

Цикл do-while

Выполняет оператор statement многократно, пока значение expression не станет ложным. Проверка происходит после каждой итерации.

Синтаксис

attr (необязательно) do statement while ( expression ) ;
attr - (с C++11) любое количество атрибутов
expression - любой выражение, которое явным образом приводимо к типу bool. Это выражение вычисляется после каждой итерации, и если оно возвращает false, цикл завершается.
statement - любой оператор, как правило, составной оператор, который является телом цикла

Объяснение

statement всегда выполняется как минимум один раз, даже если expression всегда возвращает ложное значение. Если в этом случае его не нужно выполнять, можно использовать цикл while или for.

Если выполнение цикла необходимо прервать в какой-то момент, можно использовать оператор break в качестве оператора завершения.

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

Примечания

В рамках гарантии продвижения C++ forward progress guarantee, поведение неопределено, если цикл, который не имеет наблюдаемого поведения (не выполняет вызовы функций ввода/вывода, не обращается к переменным volatile или не выполняет атомарные или синхронизационные операции), не завершается. Компиляторы могут удалять такие циклы.

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

do, while

Пример

#include <algorithm>
#include <iostream>
#include <string>
 
int main()
{
    int j = 2;
    do // compound statement is the loop body
    {
        j += 2;
        std::cout << j << ' ';
    }
    while (j < 9);
    std::cout << '\n';
 
    // common situation where do-while loop is used
    std::string s = "aba";
    std::sort(s.begin(), s.end());
 
    do std::cout << s << '\n'; // expression statement is the loop body
    while (std::next_permutation(s.begin(), s.end()));
}

Вывод:

4 6 8 10
aab
aba
baa

См. также

Документация C для do-while

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/language/do

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API