我编写了一个简单的斐波那契序列生成器,如下所示:
#include <iostream>
void print(int c, int r) {
std::cout << c << "\t\t" << r << std::endl;
}
int main() {
unsigned long long int a = 0, b = 1, c = 1;
for (int r = 1; r <= 1e3; r += 1) {
print(c, r);
a = b;
b = c;
c = a + b;
}
}
然而,当r
值接近 40 时,奇怪的事情开始发生。c
的值在负数和正数之间波动,尽管他是一个unsigned
整数,当然斐波那契数列不可能完全如此。
unsigned long long
整数怎么了?
即使是整数c
也会变得太大吗?long long