謝謝 Sunny 哥發碼,鑑於 segmentfault 的性質,從我博客中找了一篇自問自答的文章,這篇文章翻譯自 stackoverflow 上的 Is 0 a decimal literal or an octal literal?。html
C++ 中 0 是十進制仍是八進制?java
雖然在任何進制數種, 0 只有一個值——那就是「零」,之因此問這個問題,純粹是閒着蛋疼。git
最近和朋友們討論關於數的話題,他說:「八進制數如今幾乎從未使用過」。 我一時沒法反駁,確實,除了咱們常用的十進制,在計算機中用的最多的就是二進制和十六進制了,八進制數確實很「小衆」。segmentfault
等我回到家仔細一琢磨,八進制~八進制~「八進制就是以 0 開頭的數字」,咦,那 0 算嗎?0 也是以 0 開頭的數字啊!若是 0 是八進制的話,那麼咱們幾乎天天都在使用八進制數。翻譯
計算機中確實有不少東西值得深究,好比簡單類型其實一點都不簡單,更多蛋疼的計算機問題能夠去個人《代碼之謎》系列去看看。code
那麼 0 是八進制數嗎?C++ 規範如何定義的?htm
是的,在 C++ 中,0 是 八進制 的。ci
根據 C++ 標準:get
2.14.2 整數 [lex.icon]博客
integer-literal: decimal-literal integer-suffixopt octal-literal integer-suffixopt hexadecimal-literal integer-suffixopt decimal-literal: nonzero-digit decimal-literal digit octal-literal: 0 <--------------------<這裏> octal-literal octal-digit
之後咱們設置能夠自豪的說,「在計算機中,八進制比二進制,甚至十六進制更廣泛」。