【问题标题】:What is the difference between += and =+?+= 和 =+ 有什么区别?
【发布时间】:2011-02-25 17:03:45
【问题描述】:

+= 和 =+ 有什么区别? 具体来说,在 java 中,但在一般情况下也是如此。

【问题讨论】:

    标签: java syntax operators increment unary-operator


    【解决方案1】:
    i += 4;
    

    意思

    i = i + 4;  // increase i by 4.
    

    虽然

    i =+ 4;
    

    等价于

    i = +4;   // assign 4 to i. the unary plus is effectively no-op.
    

    (请参阅 http://docs.oracle.com/javase/specs/jls/se7/html/jls-15.html#jls-15.15.3 了解一元 + 的作用。)

    【讨论】:

    • 有时一元加号可以增加一点清晰度。很明显,5 表示正 5,但 0.0 表示正零或负零(在 IEEE 754 中都有)。所以写 +0.0 可以在它很重要的极少数情况下提供帮助。
    • 只是好奇.. +(-4) 会被视为什么?
    • @jasonmp8.5:但如果你只要求 0.0,你会得到正版。
    • @jasonmp85 - 即使一元加号增加值,它也应该与常量相关联,而不是与赋值运算符相关联。
    • @donal-fellows:这是真的,但是如果你在代码中看到“0.0”,这是否意味着作者想要正零,或者他们只是写了 0.0 并且偶然算法做对了事物? '+0.0' 是明确的:它们意味着正零。
    【解决方案2】:

    += 是获取和递增:

    a += 5; // adds 5 to the value of a
    

    =+ 本身并不是一个真正的有效标识符,但当您使用一元 + 运算符时可能会出现:

    a =+ 5; // assigns positive five to a
    

    【讨论】:

    • 当然,没有人永远会写第二个例子,因为一元加号运算符与5 绑定,并且与= 运算符完全一致没有任何关系像那样。真是可耻,就是这样。
    【解决方案3】:

    += 是一个运算符,它将赋值的左侧增加右侧的值并将其分配回左侧的变量。 =+ 不是运算符,实际上是两个运算符:赋值运算符= 和一元加+(正)运算符,表示右侧的值是正数。它实际上是多余的,因为值是正的,除非它们被一元减号否定。您应该避免使用 =+ 构造,因为它更容易引起混淆而不是实际的好处。

    【讨论】:

      【解决方案4】:

      =+ 不是运算符。 + 是赋值运算符后面的数字的一部分。

      int a = 4; int b = 4;

      a += 1; b =+1;

      System.out.println("a=" + a + ", b=" + b);

      这表明正确格式化代码以显示意图是多么重要。

      【讨论】:

        【解决方案5】:

        具体来说,在 java 中,但在一般情况下也是如此。

        在 Java 中,x += <expr>; 等价于 x = x + ( <expr> );,其中 + 运算符可能是算术加法运算符或字符串连接运算符,具体取决于 x 的类型。另一方面,x =+ <expr>; 真的是写 x = + <expr>; 的丑陋方式,其中 + 是一元加运算符...即数字类型的无操作和编译错误。

        这个问题在一般情况下是无法回答的。有些语言支持“+=”运算符,有些则不支持。同样,某些语言可能支持“=+”运算符,而其他语言则不支持。并且某些语言可能允许应用程序“重载”一个或其他运算符。询问运算符的“一般”含义是没有意义的。

        【讨论】:

          【解决方案6】:

          我不知道您所说的“一般”是什么意思,但在 C 语言的早期版本中(大多数 Java 语法都来自 C++),=+ 是后来的原始语法变成+=,即i =+ 4等价于i = i + 4

          CRM (C Reference Manual) 是用=+=-=>>等描述C语言的文档。

          【讨论】:

            【解决方案7】:

            += 是一种增加数字的方法,或者在 java 中是 String。例如

            int i = 17;
            i += 10;  // i becomes 27 now.
            

            没有=+ 运算符。但是如果你这样做 i =+ 10; 意味着 i 等于 +10 等于 10

            【讨论】:

              【解决方案8】:

              当您有 a+=b 时,这意味着您将 b 添加到 a 中已有的内容。但是,如果您正在执行 a=+b,则将 +b 分配给 a。

              int a=2;
              int b=5;
              a+=b;
              System.out.println(a); //Prints 7
              
              a=2;
              b=5;
              a=+b;
              System.out.println(a); //Prints 5
              

              【讨论】:

                【解决方案9】:

                你所说的 += 操作用于增加 R 值中规定的特定值。就像,

                i = i+1;
                //is equivalent to 
                i += 1;
                

                然而,=+ 不是任何正确的操作,它基本上是 2 个不同的运算符等于和一元加运算符彼此写成。实际上 = 后面的 + 符号没有意义,所以尽量不要使用它。它只会导致胡闹。

                i =+ 1;
                //is equivalent to
                i = +(1);
                

                【讨论】:

                  猜你喜欢
                  • 2010-10-02
                  • 2011-12-12
                  • 2010-09-16
                  • 2012-03-14
                  • 2012-02-06
                  • 2011-11-22
                  • 2015-03-26
                  • 2013-08-19
                  • 2012-05-22
                  相关资源
                  最近更新 更多