对于没有指定顺序的运算符来说,如果表达式指向并修改了同一对象,将会引发错误并产生未定义行为。如:
int i = 0;
cout << i << " " << ++i; // 未定义
经验:
拿不准时用括号
如果改变了一个运算对象的值,在表达式的其他地方就不要在使用这个运算对象(当改变运算对象的子表达式本身就是另外一个子表达式的运算对象时,是可以的 如:*++iter
二元运算符求值顺序问题
原文:http://www.cnblogs.com/wtan/p/6579459.html