运营商优先权

Nir*_*lal 1 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);  
    }
}
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 8

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

short i=056;  
Run Code Online (Sandbox Code Playgroud)

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

强烈建议你不要使用代码i *= ++i.对于每个有关人员来说,使用起来都比较简单i *= i + 1.我还建议你不要使用八进制文字.