Числовые литералы в Java - восьмеричные?

Вот некоторый код в java для типов данных:

class Test
{
    public static void main(String args[])
    {
        int i = -0777;
        System.out.println(i);
    }
}

Выход вышеупомянутого кода -511

Если код изменен на:

class Test
{
    public static void main(String args[])
    {
        int i = -777;
        System.out.println(i);
    }
}

Выход -777.

Почему выход отличается? Какие вычисления сделаны за этот код???

1 ответ

Решение

-0777 обрабатывается компилятором как восьмеричное число (основание 8), десятичное значение которого равно -511 (-(64*7+8*7+7)). -777 является десятичным числом.

Другие вопросы по тегам