在程式設計領域,以零開頭的數字可以表現出有趣的行為。讓我們使用 Visual Studio 2013 中的範例深入研究具體細節。
考慮以下程式碼片段:
int i = 07; // i == 7 int i = 16; // i == 16 int i = 00016; // i == 14, why? int i = 05016; // i == 2574, wow ) int i = 08; // compile error, compiler expects octal number...
零字首數字的特殊處理
編譯器對零字首數字的解釋不同,具體取決於context:
00016 和的異常行為05016
分值int i = 00016;解析為i == 14,因為編譯器將前賦零視為額外的零導零導八進制數字,即使這根據C 標準是無效的。
類似地, int i = 05016;產生 i == 2574,因為編譯器將其解釋如下:
08 編譯錯誤
以0 開頭後接0-7以外的數字(例如08)的整數文字會觸發編譯錯誤,因為編譯器期望它是八進制數,但 8 不是有效的八進制數字。
以上是為什麼以零為前綴的數字在 C 中表現異常?的詳細內容。更多資訊請關注PHP中文網其他相關文章!