пятница, 16 ноября 2007 г.

Java Puzzle 59: What's the Difference?

В задачке используется массив предопределенных значений. Суть задачки не важна, так как сконцентрировавшись на ее решении можно упустить очевидное. Я натыкался на такие проблемы, когда начинал изучать Java. Вот массив значений каждое из которых меньше предыдущего на 111:
int[] values = {
        789, 678, 567, 456,
        345, 234, 123, 012 };
Или нет?

Согласно JLS 3.10.1 целочисленные литералы, начинающиеся с 0 интерпретируются как числа, записанные в восьмеричной системе счисления. Таким образом, последние значение равно 10. Авторы рекомендуют никогда не выравнивать целочисленные литералы с помощью 0. А так хочется иногда иметь красивую табличку в коде!

Тяжелое наследие Fortran и C...
Неужели сейчас кто-то использует восьмеричную систему?

2 комментария:

  1. Ты не поверишь: и С и Фортран до сих пор используются. Хотя, ИМХО, С гораздо больше распространен.

    ОтветитьУдалить
  2. Блин! Ты меня не так понял...
    Я про восьмеричную систему счисления говорил.
    Сейчас исправлю.

    ОтветитьУдалить