c++ 关于 斐波那契的 有关问题

c++ 关于 斐波那契的 问题
#include "stdafx.h"
#include <iostream>
using namespace std;

long sum();
long main()
{
sum();
}
long sum()
{
long a=0,b=1,c=0;
cout << a <<"\n"<< b<<"\n";
for(int i=0;i<=100;i++)
{
c=a+b;
a=b;
b=c;
cout << c << endl;
}
return (c);
}

用的是长整数,为什么到了后面都成负数了?

------解决方案--------------------
这个数列的值增长很快,给个估算:
f(0)=1,f(1)=1,...f(i)=f(i-1)+f(i-2)
估算2*f(i-1)>f(i)>2*f(i-2)
即后一数比前一个数*2小一点,按2*f(i-1)算的话,即,后一数比前一数大两倍
第i个数是比2的i次方小但量级差不多,这个数差不多有i位(二进制的)
折算为十进制的估算为(十位二进制数大约三位十进制数)
所以最大long long int是63位二进制数(2的63次方-1)---约20多位十进制数
这是估算,所以实际算的话会稍多算几项,i上限是60几吧
------解决方案--------------------
探讨

刚换成了 long long int 到了 第93位的时候就开始变成负数了。谢谢各位~~~

------解决方案--------------------
探讨

刚换成了 long long int 到了 第93位的时候就开始变成负数了。谢谢各位~~~