【问题标题】:The difference between += and =++= 和 =+ 的区别
【发布时间】:2011-10-20 23:10:53
【问题描述】:

我将+==+ 错位太多次了,我想我一直忘记,因为我不知道这两者之间的区别,只有那个给了我我期望的价值,并且另一个没有。

这是为什么?

【问题讨论】:

    标签: java syntax operators


    【解决方案1】:

    a += ba = a + b 的简写(但请注意,表达式 a 只会被计算一次。)

    a =+ ba = (+b),即将b 的一元+ 分配给a

    例子:

    int a = 15;
    int b = -5;
    
    a += b; // a is now 10
    a =+ b; // a is now -5
    

    【讨论】:

    • 有用而简洁的答案,但是,原谅我是新人,b的一元+是什么意思? a = b不是按照这个跟a =+ b一样吗?
    • @deadcode 是的!一元 + 不是“使操作数为正”运算符,它实际上是“身份”运算符。这……没那么有用:)
    • a = +b 的工作方式如下:int b = -5; 变量 a 现在设置为 b 的一元,当我们编写 a = +b; 所以,a = + (-5),导致 a=-5跨度>
    【解决方案2】:

    += 是一个复合赋值运算符 - 它将 RHS 操作数添加到 LHS 操作数的现有值。

    =+ 只是赋值运算符,后跟一元 + 运算符。它将 LHS 操作数的值设置为 RHS 操作数的值:

    int x = 10;
    
    x += 10; // x = x + 10; i.e. x = 20
    
    x =+ 5; // Equivalent to x = +5, so x = 5.
    

    【讨论】:

      【解决方案3】:

      += → 将右侧添加到左侧

      =+ → 不要使用这个。将左侧设置为右侧。

      【讨论】:

      • +1 表示“不要使用这个” 如果有意使用,其意图可能会造成混淆。如果无意中使用,这是一个错误。
      【解决方案4】:

      a += b 等于 a = a + ba =+ b 等于 a = (+b)

      【讨论】:

        【解决方案5】:
        x += y 
        

        相同
        x = x + y
        

        x =+ y
        

        是错误的,但可以解释为

        x = 0 + y
        

        【讨论】:

          【解决方案6】:

          很简单。

          x += 1 等同于 x = x + 1

          x =+ 1 将使x 的值为(正)一

          【讨论】:

            【解决方案7】:

            一些历史观点:Java 从 C 继承了 += 和类似的运算符。在 C 的早期版本(1970 年代中期)中,复合赋值运算符的左侧有“=”,所以

            x =- 3;
            

            相当于

            x = x - 3;
            

            (除了x 只计算一次)。

            这引起了混乱,因为

            x=-1;
            

            将递减 x 而不是将值 -1 分配给它,因此更改了语法(避免了必须用空格包围运算符的恐惧:x = -1;)。

            (我在示例中使用了-==-,因为早期的C 没有一元+ 运算符。)

            幸运的是,Java 是在 C 更改为当前语法之后很久才发明的,所以它从来没有遇到过这个特殊问题。

            【讨论】:

              【解决方案8】:

              因为=+ 不是Java 运算符。

              【讨论】:

                猜你喜欢
                • 2013-08-07
                • 2020-01-23
                • 1970-01-01
                • 2014-10-09
                • 2010-12-21
                • 2011-05-11
                • 2014-01-24
                • 2014-02-16
                • 1970-01-01
                相关资源
                最近更新 更多