#include <stdio.h>
int main() {
unsigned long int sum = 0LL;
long i;
for (i = 0LL; i < 100000000; i ) {
sum = sum i;
}
printf("%i", sum);
}
這就是我所有的代碼,我很好奇為什么它列印 887459712 而不是 4999999950000000,以及如何解決這個問題
uj5u.com熱心網友回復:
你sum是宣告unsigned long int的,這對于你的預期結果來說足夠大了。
問題不是溢位。
問題是你的printf陳述是錯誤的。
你告訴它列印一個“正常”大小的 int %i,它最多只能達到 42 億。
你應該告訴printf列印一個unsigned long int,使用%llu
它應該是:
printf("%llu", sum);
IDEOne 鏈接
結果
Success #stdin #stdout 0s 5376KB
4999999950000000
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/462110.html
標籤:C
上一篇:在決策樹的拆分資料集步驟處理二維陣列時,是否有避免使用“memcpy”?
下一篇:mktime()用于非本地時區
