为什么代码产生输出-511

Kar*_* Rk 0 java int

考虑代码:

public class Test
{   
    public static void main(String[] args)
    {
        int i = -0777;
        System.out.printf("%d",i);
    }
}
Run Code Online (Sandbox Code Playgroud)

代码产生输出-511,我期望它是-777

Joa*_*son 8

-07770前缀意味着该数字是八进制的.

-777八进制是-511十进制的.