Read up on Undefined behavior and sequence points.
This is a slightly different, yet similar example (thanks Zan):
2) Furthermore, the prior value shall be accessed only to determine the value to be stored.
C++ example:
std::printf("%d %d", i,++i); // invokes Undefined Behaviour because of Rule no 2