沒有後綴的整數:如有必要,升級為更大的類型
原始查詢探討了為什麼迭代到100 億次會導致意外行為。一種懷疑是沒有後綴的整數文字可能不會預設為通常的 int 類型。
在 C 和 C 中,此類文字會自動提升為適當的整數類型。這確保它們的值可以在至少一種可用整數類型的限制內表示。
C 和 C 標準
依據 C 11 標準 ( [lex.icon] ¶2) 和 C99 標準(§6.4.4.1),沒有後綴的整數文字被賦予以下的最小型別可以容納其值的列表:
100億的情況下,此整數常數將被分類為long int (或 long long int,如果 long int 定義為32 位元)。
過大文字的編譯錯誤
C99 和 C 11 都規定,超出所有允許的整數類型的可表示範圍的文字會導致編譯錯誤。但是,某些編譯器可能會以非標準方式處理此問題,例如默默地截斷或丟棄多餘的數字。
以上是為什麼 C 和 C 中的無符號整數文字會提升為更大的型別?的詳細內容。更多資訊請關注PHP中文網其他相關文章!