expression1 is evaluated before the first iteration.
After each iteration, expression3 is evaluated. Both
expression1 and expression3 may be omitted. If
expression2 is omitted, it is assumed to be 1. statement
is executed repeatedly until the value of expression2 is
0. The test on expression2 occurs before each execution
of statement.