Я всегда задавался вопросом, почему ведущие нули (0) используются для представления восьмеричных чисел, а не, например, - 0o. Использование 0o было бы столь же полезно, но не вызывало бы столько проблем, сколько и ведущих 0 es (например, parseInt('08'); в JavaScript). Каковы причины этого выбора?
Почему ведущие нули используются для представления восьмеричных чисел?
Ответ 1
Все современные языки импортируют это соглашение из C, который импортировал его из B, который импортировал его из BCPL.
За исключением BCPL, используется #1234 для восьмеричного и #x1234 для шестнадцатеричного. B отклонился от этого соглашения, потому что # был унарным оператором в B (целое число с преобразованием с плавающей запятой), поэтому # 1234 нельзя было использовать, а # в качестве базового индикатора было заменено на 0.
Дизайнеры B попытались сделать синтаксис очень компактным. Думаю, именно по этой причине они не использовали двухсимвольный префикс.
Ответ 2
"0b" часто используется для двоичных, а не для восьмеричных. Ведущий "0", я подозреваю, что " O -ctal".
Если вы знаете, что собираетесь анализировать восьмеричные, используйте parseInt('08', 10);, чтобы обработать номер в качестве базовой.