C++ 中 0 是十進制還是八進制? 雖然在任何進制數種, 0 只有一個值——那就是「零」,之所以問這個問題,純粹是閒著蛋疼。 最近和朋友們討論關於數的話題,他說,八進制數現在幾乎從未使用過。 我一時無法反駁,確實,除了我們經常使用的十進制,在計算機中用的最多的就是二進制和十六進制了,八進制數確實很“小眾”。 等我回到家仔細一琢磨,八進制,八進制,「八進制就是以 0 開頭的數字」,咦,那 0 算嗎?0 也是以 0 開頭的數字啊!如果 0 是八進制的話,那麼我們幾乎每天都在使用八進制數。 計算機中確實有很多東西值得深究,比如簡單類型其實一點都不簡單,更多蛋疼的計算機問題可以去我的《代碼之謎》系列去看看。 那麼 0 是八進制數嗎?C++ 規范如何定義的? 是的,在 C++ 中,0 是 八進制 的。 根據 C++ 標准: 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 以後我們設置可以自豪的說,“在計算機中,八進制比二進制,甚至十六進制更普遍”。