Я прочитал Где восьмеричные полезны? и кажется, что восьмеричные были когда-то полезными.
Многие языки рассматривают числа, начинающиеся с 0, как восьмеричные, поэтому литерал 010
на самом деле равен 8. Среди них есть JavaScript, Python (2.7) и Ruby.
Но я не очень понимаю, почему эти языки нуждаются в восьмеричном коде, особенно когда более вероятно использование нотации для обозначения десятичного числа с лишним 0.
JavaScript - это клиентский язык, восьмеричный код кажется довольно бесполезным. Все три довольно современны в другом смысле, и я не думаю, что было бы много кода с использованием восьмеричной нотации, которая была бы нарушена при удалении этой «функции».
Итак, мои вопросы:
- Есть ли смысл в этих языках, поддерживающих восьмеричные литералы?
- Если восьмеричные литералы необходимы, почему бы не использовать что-то подобное
0o10
? Зачем копировать старую запись, которая переопределяет более полезный вариант использования?
chmod
с 0666 или 0777 для групп по 3 бита для пользователя, группы и других: чтение, запись, исполняемый файл.
parseInt('010')
действительно возвращал 8, отсюда и все советы, которые всегда следует использовать parseInt(foo, 10)
(и это все еще для меня привычка)