The for
statement evaluates a sequence of initialization expressions and then, while a condition is true, repeatedly executes an embedded statement and evaluates a sequence of iteration expressions.
The for-initializer, if present, consists of either a local-variable-declaration (§8.5.1) or a list of statement-expressions (§8.6) separated by commas. The scope of a local variable declared by a for-initializer starts at the variable-declarator for the variable and extends to the end of the embedded statement. The scope includes the for-condition and the for-iterator.
The for-condition, if present, must be a boolean-expression (§7.16).
The for-iterator, if present, consists of a list of statement-expressions (§8.6) separated by commas.
A for statement is executed as follows:
true
, control is transferred to the embedded statement. When and if control reaches the end point of the embedded statement (possibly from execution of a continue
statement), the expressions of the for-iterator, if any, are evaluated in sequence, and then another iteration is performed, starting with evaluation of the for-condition in the step above.false
, control is transferred to the end point of the for
statement.Within the embedded statement of a for
statement, a break
statement (§8.9.1) may be used to transfer control to the end point of the for
statement (thus ending iteration of the embedded statement), and a continue
statement (§8.9.2) may be used to transfer control to the end point of the embedded statement (thus executing another iteration of the for
statement).
The embedded statement of a for
statement is reachable if one of the following is true:
for
statement is reachable and no for-condition is present.for
statement is reachable and a for-condition is present and does not have the constant value false
.The end point of a for
statement is reachable if at least one of the following is true:
for
statement contains a reachable break
statement that exits the for
statement.for
statement is reachable and a for-condition is present and does not have the constant value true
.