整數文字類型:預設不是 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中文網其他相關文章!