为什么前导零用于表示八进制数?

Hau*_*eth 13 language-agnostic history octal

我一直想知道为什么前导零(0)用于表示八进制数,而不是 - 例如 - 0o.使用0o会同样有用,但不会导致与导致0es 一样多的问题(例如parseInt('08');在JavaScript中).这个设计选择背后的原因是什么?

n. *_* m. 17

所有现代语言都从C导入此约定,从C导入它,从BCPL导入它.

除了用于#1234八进制和#x1234十六进制的BCPL .B已经偏离了这个约定,因为#是B中的一元运算符(整数到浮点转换),因此无法使用#1234,并且#作为基本指示符被替换为0.

B的设计者试图使语法非常紧凑.我猜这就是他们没有使用双字符前缀的原因.