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

Цикл do-while

Материал из cppreference.com
< cpp‎ | language
 
 
 
Инструкции
Метки
метка : оператор
Операторы выражений
выражение ;
Составные операторы
{ оператор... }
Операторы выбора
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-whilestd::string s ="aba";std::sort(s.begin(), s.end());dostd::cout<< s <<'\n';// выражение оператор является телом циклаwhile(std::next_permutation(s.begin(), s.end()));}

Вывод:

4 6 8 10 aab aba baa

[править]Смотрите также

close