Числовые литералы в 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
является десятичным числом.