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

时间:2012-07-14 11:01:47

标签: language-agnostic history octal

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

3 个答案:

答案 0 :(得分:17)

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

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

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

答案 1 :(得分:1)

“0b”通常用于二进制而不是八进制。领先的“0”是,我怀疑“ O -ctal”。

如果您知道要解析八进制,请使用parseInt('08', 10);使其将该数字视为十进制数。

答案 2 :(得分:0)

值得一提的是,在Python 3.0中,由于您在问题中提到的确切原因,他们决定八进制文字必须以'0o'作为前缀,而旧的'0'前缀则成为SyntaxError。

https://www.python.org/dev/peps/pep-3127/#removal-of-old-octal-syntax