在第三行,X和Y是递增/递减之前,他们的评价,因此他们的新值打印的法院。在第五行,一个原始值的临时副本(X = 6,Y = 4)发送至cout,然后原来的X和Y的递增。这就是为什么从后缀运算符的变化不出现,直到下一行。
副作用
一个副作用是由于一个运算符,表达式,语句,或函数后仍然算子,表达,陈述,或已完成的评价功能。
副作用可能是有用的:
1
x = 5;
赋值操作符改变了x的值永久的副作用。即使在语句执行完毕,x的值将5。
副作用也可能会有危险:
C++中没有定义的顺序,功能参数进行评估。如果左参数先进行评估,这成为一个调用添加(5,6),它等于11。如果正确的参数先进行评估,这成为一个调用添加(6,6),它等于12!
作为一般规则,这是一个好主意,以避免产生副作用在复合表达式使用运营商。这包括所有的赋值操作符,加上递增和递减运算符。任何导致副作用操作符应放在它自己的声明。
请注意,副作用并不仅限于运算符,表达式和语句。功能还可以有副作用,我们将讨论一节中的全局变量(为什么他们是邪恶的)。