Countable loops
Loops are considered to be countable if they take any of the following forms:
Countable for loop syntax with single statement >>-for--(--+--------------------+--;--exit_condition--;--increment_expression--)--> '-iteration_variable-' >--statement---------------------------------------------------><
Countable for loop syntax with statement block >>-for--(--+--------------------+--;--+------------+--)---------> '-iteration_variable-' '-expression-' >--{--+------------------+--+----------------+--increment_expression--+----------------+--}->< '-declaration_list-' '-statement_list-' '-statement_list-'
Countable while loop syntax >>-while--(--exit_condition--)----------------------------------> >--{--+------------------+--+----------------+--increment_expression--}->< '-declaration_list-' '-statement_list-'
Countable do while loop syntax >>-do--{--+------------------+--+----------------+--increment_expression--}--while--(--exit_condition--)->< '-declaration_list-' '-statement_list-'
The following definitions apply to these syntax diagrams:
- iteration_variable
- is a signed integer that has either automatic or register storage class, does not have its address taken, and is not modified anywhere in the loop except in the increment_expression.
- exit_condition
- takes the following form:
|--increment_variable--+-<=-+--expression-----------------------| +-<--+ +->=-+ '->--'
where expression is a loop-invariant signed integer expression. expression cannot reference external or static variables, pointers or pointer expressions, function calls, or variables that have their address taken. - increment_expression
- takes any of the following forms:
- ++iteration_variable
- --iteration_variable
- iteration_variable++
- iteration_variable--
- iteration_variable += increment
- iteration_variable -= increment
- iteration_variable = iteration_variable + increment
- iteration_variable = increment + iteration_variable
- iteration_variable = iteration_variable - increment