do-while цикл
Условно выполняет оператор повторно (как минимум один раз).
Синтаксис
attr (необязательно) do statement while ( expression ); |
| attr | - | (начиная с C++11) любое количество атрибутов |
| expression | - | выражение |
| statement | - | оператор (обычно составной оператор) |
Пояснение
Когда управление достигает оператора do, его statement выполняется безусловно.
Каждый раз после завершения выполнения statement вычисляется expression и преобразуется в bool в контекстном преобразовании. Если результат — true, statement выполняется снова.
Если требуется завершить цикл внутри statement, в качестве оператора завершения можно использовать оператор break.
Если требуется завершить текущую итерацию внутри statement, в качестве сокращённого способа можно использовать оператор continue.
Примечания
В рамках гарантии прогресса C++ поведение является неопределённым, если цикл, который не является тривиальным бесконечным циклом(начиная с C++26) без наблюдаемого поведения не завершается. Компиляторам разрешается удалять такие циклы.
Ключевые слова
Пример
#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/cpp/language/do