代码之家  ›  专栏  ›  技术社区  ›  samuraiseoul

简单的运算符问题。+=

  •  2
  • samuraiseoul  · 技术社区  · 14 年前

    所以我的朋友给了我一些源代码,让我可以开始阅读和理解它,我有一个问题,但由于他不在线,我想我会尝试在这里,主要是我不太明白这行。

    num += i;
    

    本质上,这与

    num = num + i 
    

    如果你需要更多的细节请告诉我!我期待着很快听到你的答复。

    4 回复  |  直到 14 年前
        1
  •  11
  •   Matthieu M.    14 年前

    从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.

        2
  •  3
  •   Remy Lebeau    14 年前

    num += i 增加 num 直接,鉴于 num = num + i 号码 ,将其递增,然后将其分配回 .

        3
  •  3
  •   AnT stands with Russia    14 年前

    += ). 事实上,这就是 += 在语言规范中定义。

        4
  •  0
  •   PatrickV    14 年前

    如前所述,那里真正发生的事情取决于语言。如果一个假设C++,而num是一个整数,那么其他人就已经发布了,就像你们一样。

    num += i;
    

    相当于

    num = num + i;
    

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

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