我写了一个简单的Fibonacci序列生成器,看起来像:
#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;
}
}
Run Code Online (Sandbox Code Playgroud)
然而,当r价值达到40左右时,奇怪的事情开始发生.c尽管他是一个unsigned整数,但它的价值在负面和正面之间振荡,当然斐波纳契序列不可能就是这样.
这是怎么回事用unsigned long long整数?
是否c得到过大,即使是long long整数?