Namespaces
Variants
Actions

do-while loop

From cppreference.com
< cpp‎ | language
 
 
C++ language
General topics
Flow control
Conditional execution statements
Iteration statements (loops)
while
do-while
Jump statements
Functions
Function declaration
Lambda function expression
inline specifier
Dynamic exception specifications(until C++17*)
noexcept specifier(C++11)
Exceptions
Namespaces
Types
Specifiers
constexpr(C++11)
consteval(C++20)
constinit(C++20)
Storage duration specifiers
Initialization
Expressions
Alternative representations
Literals
Boolean - Integer - Floating-point
Character - String - nullptr(C++11)
User-defined(C++11)
Utilities
Attributes(C++11)
Types
typedef declaration
Type alias declaration(C++11)
Casts
Memory allocation
Classes
Class-specific function properties
Special member functions
Templates
Miscellaneous
 
 

Conditionally executes a statement repeatedly (at least once).

Contents

[edit]Syntax

attr (optional)dostatementwhile (expression);
attr - (since C++11) any number of attributes
expression - an expression
statement - a statement (typically a compound statement)

[edit]Explanation

When control reaches a do statement, its statement will be executed unconditionally.

Every time statement finishes its execution, expression will be evaluated and contextually converted to bool. If the result is true, statement will be executed again.

If the loop needs to be terminated within statement, a break statement can be used as terminating statement.

If the current iteration needs to be terminated within statement, a continue statement can be used as shortcut.

[edit]Notes

As part of the C++ forward progress guarantee, the behavior is undefined if a loop that is not a trivial infinite loop(since C++26) without observable behavior does not terminate. Compilers are permitted to remove such loops.

[edit]Keywords

do, while

[edit]Example

#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 usedstd::string s ="aba";std::sort(s.begin(), s.end());   dostd::cout<< s <<'\n';// expression statement is the loop bodywhile(std::next_permutation(s.begin(), s.end()));}

Output:

4 6 8 10 aab aba baa

[edit]See also

C documentation for do-while
close