Below are two common issues resulting in undefined behavior due to the sequence point rules:
a[i] = i++; //has a read and write between sequence points i = i++;
Here are two good expressions that work for most C compilers, yet are ambiguous due to sequence points:
x ^= y ^= x ^= y; // in-place swap of two variables
And also
int i=0; printf("%d %d %d", ++i, ++i, ++i); // usually prints out 3 2 1... but not for all compilers!