Simply put: Because the standard says "you must only use a variable with a modification ONCE between sequence points (sequence points is essentially the semicolon at the end of the line - although it's not strictly true, that's the simplified view of it). The REASON the standard says so is that the compiler is ALLOWED to perform the ++ part of the calculation at any time within the two sequence points.
--
Mats

