简单操作员问题。 + =

时间:2010-09-25 06:41:53

标签: c++ variables operators

所以我的朋友给了我一些源代码,所以我可以复习并理解它,我有一个问题,但是因为他不在线我想我会在这里试试,主要是我不太明白这个线。

num += i;

基本上,这与

相同
num = num + i 

正确?

如果您需要更多详情,请告诉我!我期待很快收到您的回复。

4 个答案:

答案 0 :(得分:11)

来自ISO C ++ 03(第5.17 / 7节)

The behavior of an expression of the form E1 op= E2 is equivalent to E1 = E1 op E2 except that E1 is evaluated only once.

答案 1 :(得分:3)

是。它完全相同(假设您正在讨论内置的+=)。实际上,这就是语言规范中定义+=的方式。

你最喜欢的C ++书不是涵盖这个主题吗?

答案 2 :(得分:3)

基本上是的,但效率更高。对于基本类型(如整数),使用num += i直接递增num的值,而num = num + i创建值为num的临时值,递增它,然后赋值回到num

答案 3 :(得分:0)

之前发布的真实情况取决于语言。如果假设C ++,并且该num是一个整数,那么就像其他人发布的那样

num += i;

相当于

num = num + i;

但在c ++ / c#中确定行为真的取决于类。实际上,您将在num对象上调用i对象类型的“+ =”运算符。在良好的设计中,这应该与首先执行“+”运算符相同,然后以上述方式执行=运算符。但它不一定是:

 class foo
 {
     bool operator += (int i) {return false;}
 }

 foo num;
 int i;

 bool result = num += i;

在该示例中,num将保持不变,结果将为false。