例如:
int i; cout<<i<<" "<++i<<endl; //未定义的
编辑器可能先 ++i 再输出i, 也可能先输出i, 再 ++i。 结果是不可控的。所以不管结果是什么都是错的。
再比如表达式 f() + g() * h() +j(),如果这四个函数不会改变同一对象,也不会进行io操作,那么这句话中,先调用哪个函数无关紧要。 反之,如果影响同一对象就会产生未定义的行为,是错误的表达式。
2.
bool b = true;
bool b2 =-b; //b2 是true
首先 b为true 会被转换成1, b2 = -1, -1!=0, 所以b2 也是true
3.
比较运算符
if(i<j<k) 错误,i<j返回值是布尔值, 之后布尔值再和k进行比较
if(i<j && j<k) //正确
原文:https://www.cnblogs.com/dairuiquan/p/10046914.html