2013-07-29 195 views
1

我試圖計算此爲i=i*++i因此i=56*57這給了我3192,但我的計劃說,該值爲2162:運算符優先級

class Demo { 
    public static void main(String args[]) { 
     short i=056; 
     i*=++i; 
     System.out.println(i); 
    } 
} 
+0

你對什麼感興趣?'i = i * ++ i'或'i * = ++ i'? –

+0

從'056'中刪除前導'0',然後你會注意到一些事情,並可能得到答案。 –

回答

8

的問題是乘法之前 - 它在這裏:

short i=056; 

這是一個八進制文字,十進制值爲46.所以,你實際上得到46 * 47的結果,這確實是2162.

我會強烈建議你不要使用像i *= ++i雖然代碼。所有相關人員使用i *= i + 1更簡單。我還建議你不要使用八進制文字。

+0

我也強烈建議不要使用八進制文字! – Gabe

+0

@加貝:大約30秒前就做過了:) –