整數文字:預設情況下並不總是Int
在循環中迭代時,過大的整數文字可能會導致意外問題。通常,不帶後綴的文字被解釋為 int。然而,這個假設對於非常大的值可能不成立。
溢位與提升
當整數文字超過 int 的範圍(通常是 32 位元)時, undefined可能會導致行為(UB)。但是,在某些情況下,編譯器可能會自動將文字提升為更大的類型,例如 long int(通常為 64 位元)。
標準規範
C 和C 標準都規定了整數文字的提昇以適當types.
C:
C:
C:C:C:C:C: C99 標準第6.4.4.1節規定,文字類型是第一個列出的可以表示其值的類型(即 int、long int , long long int) 或擴展整數類型(如果需要)。 C : C 11 標準的 [lex.icon] ¶2 節同樣指定根據需要提升為 long int 或 long long int。 範例考慮整數文字 10000000000。在 C 環境中,這將被解釋為 long int。但是,如果使用的編譯器是 32 位元編譯器,則可能會導致編譯錯誤,因為文字對於可用的整數類型來說太大。以上是為什麼 C 和 C 中過大的整數文字有時不預設為「int」?的詳細內容。更多資訊請關注PHP中文網其他相關文章!