Цикл 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 или не выполняет атомарные или синхронизационные операции), не завершается. Компиляторы могут удалять такие циклы.
Ключевые слова
Пример
#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