close
Пространства имён
Варианты
Действия

Цикл do-while

Материал из cppreference.com
 
 
 
Инструкции
Метки
метка : оператор
Операторы выражений
выражение ;
Составные операторы
{ оператор... }
Операторы выбора
if
switch
Операторы итерирования
while
do-while
for
диапазонный for(C++11)
Операторы переходов
break
continue
return
goto
Операторы объявления
объявление ;
Блоки try
try составной-оператор последовательность-обработчиков
Транзакционная память
synchronized, atomic_commit, и т.д. (ТС TM)
 

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

Синтаксис

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

Объяснение

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

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

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

Примечание

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

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

do, while

Пример

#include <iostream>
#include <algorithm>
#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

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