after reading about sequence points, I learned that i = ++i is undefined.
i = ++i
So how about this code:
int i; int *p = &i; int *q = &i;
The expression is the same as i=++i. The only tool that can detect it is your head. In C with power comes responsibility.