C++ 中 0 是十進制仍是八進制?

謝謝 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

之後咱們設置能夠自豪的說,「在計算機中,八進制比二進制,甚至十六進制更廣泛」。

相關文章
相關標籤/搜索