[英]Java prefix operator behavior
我想知道為什么下面的代碼返回0。我認為num2
將在應用到*=
之前遞增,第二行將執行num2 = 1*1
int num2 = 0;
num2 *= ++num2;
System.out.println(num2);
從JLS :
形式為
E1 op= E2
的復合賦值表達式等效於E1 = (T) ((E1) op (E2))
,其中T
是E1
的類型,只是E1
僅被評估一次。
因此,您的代碼等效於:
num2 = (int) (num2 * ++num2);
乘法的左側操作數為零,因此結果為零。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.