Я всегда задавался вопросом, почему ведущие нули (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);
, чтобы обработать номер в качестве базовой.