Java前缀运算符行为

时间:2017-06-02 15:12:46

标签: java

我想知道为什么跟随代码返回0.我认为num2会在应用到*=之前递增,而第二行会执行num2 = 1*1

int num2 = 0;
num2 *= ++num2;
System.out.println(num2);

1 个答案:

答案 0 :(得分:2)

来自JLS

  

java -version javac -version 形式的复合赋值表达式等同于E1 op= E2,其中E1 = (T) ((E1) op (E2))T的类型,但E1仅被评估一次。

因此,您的代码等同于:

E1

乘法的左手操作数为零,因此结果为零。