C++中没有定义的顺序,功能参数进行评估。如果左参数先进行评估,这成为一个调用添加(5,6),它等于11。如果正确的参数先进行评估,这成为一个调用添加(6,6),它等于12!
作为一般规则,这是一个好主意,以避免产生副作用在复合表达式使用运营商。这包括所有的赋值操作符,加上递增和递减运算符。任何导致副作用操作符应放在它自己的声明。
请注意,副作用并不仅限于运算符,表达式和语句。功能还可以有副作用,我们将讨论一节中的全局变量(为什么他们是邪恶的)。
1
2
int x = 5;
int nValue = Add(x, ++x);
增加 (增加 1 ) 和递减 ( 减1 ) 一个变量 是很常见的, 他们有自己的 运营商在 C. 其实有两个 版本的每个 操作 的前缀 和 后缀 版 版 。