A Parameter Passing mode where parameters to a function are not evaluated until they are used; and are re-evaluated each time they are used. Compare with Lazy Evaluation and Strict Evaluation (but notice difference of opinion on Lazy Evaluation).
Macro systems in many languages
Looping constructs in many languages; in the statement while(x) y; the x part is evaluated at least once (and possibly an infinite number of times); the y part is evaluated zero or more times.
Care must be taken when expressions containing side effects are passed to functions/macros that have normal order evaluation. C/C++ programmers have long known to be very careful with macros defined by Cee Preprocessor Statements.
See original on c2.com