2012-07-14 62 views
10

我一直想知道爲什麼前導零(0)用於表示八進制數,而不是—,例如— 0o。使用0o將同樣有用,但不會引起與導致0 es(例如,在JavaScript中的parseInt('08');)一樣多的問題。這種設計選擇背後的原因是什麼?爲什麼前導零用來表示八進制數?

回答

17

所有現代語言都從C中導入這個約定,C從B導入,B從BCPL導入。

除BCPL使用十六進制的#1234和十六進制的#x1234。 B已經脫離了這個約定,因爲#是B中的一元運算符(整數到浮點數轉換),所以#1234不能使用,#作爲基本指針被替換爲0.

B的設計者試過使語法非常緊湊。我想這是他們沒有使用雙字符前綴的原因。

1

「0b」通常用於二進制而不是八進制。領先的「0」是,我懷疑是「O-直腸」。

如果您知道您將要解析八進制數,請使用parseInt('08', 10);使其將數字視爲十位數。

+0

是的,我知道。我只是想知道爲什麼它被使用,因爲這對於新手來說有點混亂。用'0b'我犯了一個錯誤,固定爲'0o'。 – Hauleth 2012-07-14 11:18:22

+0

「八」中的「零」?幾乎不。我的猜測是,它只是當時流行的數字格式,就像現在的十六進制格式一樣。 – tripleee 2012-07-14 12:10:06

+0

@triplee:你認識到0看起來像一個O,對吧?這並不是人們並沒有用y34rs的數字取代13773rs。 – 2017-11-01 20:50:52