給出以下代碼:int p,k=8;p=k*(++k-8);System.out.println(p);什么時(shí)候++k被評(píng)估k=9,然后就變成了k*(9-8)給予9*1int p,k=8;p=(++k-8)*k;System.out.println(p);但這給出了9作為輸出
2 回答

蠱毒傳說
TA貢獻(xiàn)1895條經(jīng)驗(yàn) 獲得超3個(gè)贊
這是您的代碼編譯的類文件:
int k = 8;
byte var10000 = k;
int k = k + 1;
int p = var10000 * (k - 8);
System.out.println(p);

料青山看我應(yīng)如是
TA貢獻(xiàn)1772條經(jīng)驗(yàn) 獲得超8個(gè)贊
你有一個(gè)乘法
left side: k right side: (++k-8)
就像您正確說的那樣,大括號(hào)優(yōu)先。但是,您的程序仍然“從左到右”運(yùn)行。因此,首先評(píng)估左側(cè),即k = 8
。然后評(píng)估右側(cè),即(++k-8) = 1
。現(xiàn)在我們已經(jīng)確定了雙方,可以將它們相乘:8*1 = 8
。
添加回答
舉報(bào)
0/150
提交
取消