首頁 > 後端開發 > C++ > 為什麼 For 迴圈中的大整數文字的行為與預期不同?

為什麼 For 迴圈中的大整數文字的行為與預期不同?

Linda Hamilton
發布: 2024-12-14 15:47:11
原創
1000 人瀏覽過

Why Do Large Integer Literals in For Loops Behave Differently Than Expected?

整數文字類型:預設不是 Int?

問題:

為什麼for 循環迭代 100 億次比迭代 1次需要更長的時間

答案:

循環中的迭代變數是32位,溢出,導致無限循環。代表 100 億的文字,儘管沒有 L 後綴,也會被編譯器自動提升到適當的範圍(在本例中至少為 64 位元)。

C :

根據C 11 標準([lex.icon] ¶2),不含後綴的整數位面量的類型是第一個表6 中的一個,其值可以表示:

Type
int
long int
long long int

因此,在這種情況下,文字被解釋為long int或 long long int(如果 long int 是 32 位元)。

C:

在 C99 中([§6.4.4.1]),規則類似。整數常數的類型由可以表示其值的類似清單中的第一個類型決定。

實現定義的類型:

兩者都是C 11 ( [lex.icon] ¶3) 和C99 ([§6.4.4.1 ¶5])允許整數文字為「擴展整數」類型」(特定於實現的整數類型)如果沒有找到其他有效類型。

以上是為什麼 For 迴圈中的大整數文字的行為與預期不同?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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