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 is a simple rule from Programming principles and practices using c++ by Bjarne Stroustup
"if you change the value of a variable in an expression.Don't read or write twice in the same expression"
a[i] = i++; //i's value is changed once but read twice
i = i++; //i's value is changed once but written twice