Тот факт, что ведущий ноль указывает, что число восьмерично, часто забывают. Я видел, что это несколько раз приводило к путанице, например, когда кто-то пытался ввести IP-адрес, используя хороший, обычный формат для октетов:
192.168.010.073
и синтаксический анализатор интерпретировал последние 2 октета как восьмеричные числа.
Единственное, что хуже, чем неудачное использование C старших нулей для создания восьмеричных чисел, это обработка в Javascript ведущих нулей до иногда восьмеричное число (число восьмеричное, если остальные цифры в порядке - меньше 8 - десятичное в противном случае). В Javascript (017 == 15)
, но (018 == 18)
.
Я бы предпочел, чтобы была ошибка; на самом деле я бы предпочел вообще отказаться от восьмеричной буквальной поддержки. По крайней мере, используйте более префикс в вашем лице, как, возможно,
0t10 (ocTal 8)
0k17 (oKtal 15)
Но я на 35 лет опоздал с моим предложением.