【发布时间】:2017-05-15 09:54:57
【问题描述】:
尽管使用了 long int,但在斐波那契数列中添加大量数字时,我得到了负输出。如何解决?
#include <iostream>
using namespace std;
void main() {
long int sum = 2;
long int f1 = 1, f2 = 2, f3;
for (unsigned int i = 2; i < 4000000; i++) {
f3 = f2 + f1;
if (!(f3 % 2)) {
sum += f3;
}
swap(f1, f2);
swap(f2, f3);
}
cout << sum << endl;
}
输出为-1833689714
【问题讨论】:
-
整数溢出。
-
顺便说一句,这是未定义的行为。
标签: c++ visual-c++