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

这个表达式将如何计算

  •  0
  • GuruKulki  · 技术社区  · 15 年前

    我有一个复合赋值的表达式

    x=(x+2)*5

    x=x+(2*5)

    为什么?

    3 回复  |  直到 15 年前
        1
  •  7
  •   Jon Skeet    15 年前

    x += expr;
    

    相当于

    x = x + (expr);
    

    所以在这种情况下

    x = x + (2 * 5);
    

    会的 非常 如果 x 隐式地用于表达式的一部分。

        2
  •  2
  •   Progman    15 年前

    任何形式的表达 var op= expr var = var op expr 15.26.2 Compound Assignment Operators .

        3
  •  1
  •   polygenelubricants    15 年前

    x *= a + b;
    

    * 优先级高于 + ,这仍被评估为

    x = x * (a + b)
    

    详细解释见 JLS 15.26.2 Compound Assignment Operatos

    相当于 ,在哪里 T E1级 ,除了 仅评估一次