0
在循環結果的最後一次迭代中是錯誤的。我知道在減法之前數字可以比long長。這就是爲什麼我把權力設定很久。最後一次迭代的結果應該是17888888888888888889.爲什麼不是?用長整數長計算錯誤
const int NR_LEVELS = 18;
unsigned long levels[NR_LEVELS];
unsigned long long power = 10;
for(unsigned int i = 0; i < NR_LEVELS; i++) {
levels[i] = ((i+1)*10*power-(i+2)*power+1)/9;
cout << levels[i] << endl;
power *= 10;
}
levels[17] = 17888888888888888889lu;
for(unsigned int i = 0; i < NR_LEVELS; i++) {
cout << levels[i] << endl;
}
aaaarrrrr ...我一整天都知道,但不知何故,我認爲long> int並且不能忘記它:C – 2013-04-06 20:34:46
@ lord.didger:代碼中也存在類型問題,但即使使用正確的類型,你將無法獲得正確的結果。 – nhahtdh 2013-04-06 20:37:40