gpt4 book ai didi

c++ - 随着斐波那契数列中数字变大,奇怪的输出

转载 作者:行者123 更新时间:2023-11-30 01:58:32 26 4
gpt4 key购买 nike

我注意到在我的斐波那契数列中我得到了负数 after a certain point :

267914296 433494437 701408733 1134903170
1836311903 -1323752223 512559680 -811192543 -298632863

这与“int”的范围有限有关吗?还是我的代码有问题?

代码如下:

using std::cout;

int main()
{

int n = 50, f1 = 0, f2 = 1, fn = 0, i = 0;

cout << "0 ";
for (i = 0; i < n; i++)
{
fn = f1 + f2;
f2 = f1;
f1 = fn;

cout << fn << " ";
}

最佳答案

是的,这与int的范围有限有关。这称为翻滚溢出,其工作原理与您汽车中的里程表一样。一旦数字超过了它的最高可能值,它就会滚动到它的最低可能值(对于 int 来说是一个负数)。考虑使用 unsigned intlong unsigned int,尽管第二个不一定更长(它取决于平台)。 long double 可以容纳更大的数字。如果您想使用任意大的数字(任意大),您可以在 this question 的答案中找到合适的库。 .

关于c++ - 随着斐波那契数列中数字变大,奇怪的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17280203/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com