运营商优先权

时间:2013-07-29 06:31:33

标签: java operator-precedence

我尝试将其计算为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);  
    }
}

1 个答案:

答案 0 :(得分:8)

问题出在乘法之前 - 就在这里:

short i=056;  

这是一个八进制字面值,十进制值为46.所以你实际上得到了46 * 47的结果,这确实是2162。

我会强烈建议您不要使用像i *= ++i这样的代码。所有相关人员使用i *= i + 1都比较简单。我还建议你不要使用八进制文字。