我想知道为什么跟随代码返回0.我认为num2
会在应用到*=
之前递增,而第二行会执行num2 = 1*1
int num2 = 0;
num2 *= ++num2;
System.out.println(num2);
答案 0 :(得分:2)
来自JLS:
java -version javac -version
形式的复合赋值表达式等同于E1 op= E2
,其中E1 = (T) ((E1) op (E2))
是T
的类型,但E1
仅被评估一次。
因此,您的代码等同于:
E1
乘法的左手操作数为零,因此结果为零。