Is “*p = ++(*q)” undefined when p and q point to the same object?
问题 after reading about sequence points, I learned that i = ++i is undefined. So how about this code: int i; int *p = &i; int *q = &i; *p = ++(*q); // that should also be undefined right? Let's say if initialization of p and q depends on some (complicated) condition. And they may be pointing to same object like in above case. What will happen? If it is undefined, what tools can we use to detect? Edit: If two pointers are not supposed to point to same object, can we use C99 restrict? Is it what