在第三行,X和Y是递增/递减之前,他们的评价,因此他们的新值打印的法院。在第五行,一个原始值的临时副本(X = 6,Y = 4)发送至cout,然后原来的X和Y的递增。这就是为什么从后缀运算符的变化不出现,直到下一行。
副作用
一个副作用是由于一个运算符,表达式,语句,或函数后仍然算子,表达,陈述,或已完成的评价功能。
副作用可能是有用的:
1
2
int x = 5;
int nValue = Add(x, ++x);
C++中没有定义的顺序,功能参数进行评估。如果左参数先进行评估,这成为一个调用添加(5,6),它等于11。如果正确的参数先进行评估,这成为一个调用添加(6,6),它等于12!
作为一般规则,这是一个好主意,以避免产生副作用在复合表达式使用运营商。这包括所有的赋值操作符,加上递增和递减运算符。任何导致副作用操作符应放在它自己的声明。
请注意,副作用并不仅限于运算符,表达式和语句。功能还可以有副作用,我们将讨论一节中的全局变量(为什么他们是邪恶的)。
在票面价值,这看起来很奇怪……我会在他们为。
1。这一评估17,像彼得P说。没有方法可以评价15,因为它将成为:(金额= 12 +5)。
2。再次,什么是错的。这应该是(我认为),总和= 12 +(4)=8。
3。这应该是正确的,为后缀的++将增量CTR后的表达式被求值(我认为)。
4。我从来没有见过一个像这样的–后缀,我认为更应该编译。
用你的编译器来编译每个语句,并看看会发生什么。我刚刚写完我的意见,我没有编译代码。