expression1 is evaluated before the first iteration.
After each iteration, expression3 is evaluated.
Both expression1 and expression3 may be ommited.
If expression2 is ommited, 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.