首頁 > 後端開發 > C++ > 為什麼 C 和 C 中的無符號整數文字會提升為更大的型別?

為什麼 C 和 C 中的無符號整數文字會提升為更大的型別?

Patricia Arquette
發布: 2024-12-12 19:30:15
原創
701 人瀏覽過

Why Do Unsigned Integer Literals in C and C   Promote to Larger Types?

沒有後綴的整數:如有必要,升級為更大的類型

原始查詢探討了為什麼迭代到100 億次會導致意外行為。一種懷疑是沒有後綴的整數文字可能不會預設為通常的 int 類型。

在 C 和 C 中,此類文字會自動提升為適當的整數類型。這確保它們的值可以在至少一種可用整數類型的限制內表示。

C 和 C 標準

依據 C 11 標準 ( [lex.icon] ¶2) 和 C99 標準(§6.4.4.1),沒有後綴的整數文字被賦予以下的最小型別可以容納其值的列表:

  • int
  • long int
  • long long int

100億的情況下,此整數常數將被分類為long int (或 long long int,如果 long int 定義為32 位元)。

過大文字的編譯錯誤

C99 和 C 11 都規定,超出所有允許的整數類型的可表示範圍的文字會導致編譯錯誤。但是,某些編譯器可能會以非標準方式處理此問題,例如默默地截斷或丟棄多餘的數字。

以上是為什麼 C 和 C 中的無符號整數文字會提升為更大的型別?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板