2013-07-29 136 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秒前就做过了:) –