cout不输出正确的数据

Wil*_*ire 0 c++ integer cout fibonacci

我用c ++编写了一个程序来输出你告诉它的fibonacci序列中的数字.它一直工作到大约第47个数字,然后它打印出完全不同的数字,甚至是负数,并且它们都没有超过9或10个单独的整数.这是代码

#include <iostream>

int a = 0;
int b = 1;
int c;
int var = 0;
int num;

void fibonacci()
{
     using namespace std;
     c = a;          
     a = a + b;           
     b = c;
     var += 1;
}

void loop()
{    
    using namespace std;
    for (int iii=0; iii<num; iii++)
    fibonacci();
}

int main()
{
    using namespace std;
    cout << "What fibonacci number do you want to know? ";
    cin >> num;
    cin.get();
    loop();
    cout << "" << endl;
    cout << c << endl;
    cin.get();

    a = 0;
    b = 1;
    var = 0;

    return main();
}
Run Code Online (Sandbox Code Playgroud)

是否有一些限制c ++可以一次打印多少个字符?

nul*_*ent 6

Fib(47) = 2971215073大于2147483647.

std::numeric_limits<int>::max() == 2^31 - 1 == 2147483647 在你的情况下.

因此,结果整数溢出num == 47.

@jogojapan补充道:

sizeof(int)是4个字节(在许多平台上,即),是32位.2 ^ 31-1 [numeric_limits :: max()]是可以使用int(在这些平台上)呈现的最大数字.