C语言中数组可以定义成长整型的吗?
谭浩强《C程序设计》(第三版)第七章数组,一维数组举例一节,133页,用数组来处理求Fibonacci数列问题,程序只输出了前20个数,如果要像第六章那样输出数列的前40个数,我把程序中的20改成40,并把数组定义成长整型,程序如下:
#include<stdio.h>
void main()
{ int i;
long int f[40]={1,1};
for(i=2;i<40;i++)
f[i]=f[i-2]+f[i-1];
for(i=0;i<40;i++)
{ if(i%4==0) printf("\n");
printf("%12d",f[i]);
}
printf("\n");
}
为什么结果不对呢?后20项的结果中有负数。
而该书第六章用循环求Fibonacci数列的前40项时,也是把变量定义成长整型。难道数组元素不能太大?