读书人

新手关于Programming in c 这本书中一

发布时间: 2012-02-24 16:30:38 作者: rapoo

新手关于Programming in c 这本书中一个例题,有看过这本书的人帮忙来看看啊
我最近在看Programming in c 这本书,书中有个例题,我在VC6.0和TC2.0中编译都会出现错误,那位高手能告诉我是怎么回事吗?

#include "stdio.h "
int main(void)
{
int i, numFibs;

printf( "How many Fibonacci numbers do you wanter (between 1 and 75)? ");
scanf ( "%i ", &numFibs);

if(numFibs < 1 || numFibs > 75 ){
printf( "Bad number, sorry!\n ");
return 1;

}

unsigned long long int Fibonacci[numFibs];

Fibonacci[0] = 0;
Fibonacci[1] = 1;

for (i = 2; i < numFibs; ++i)
Fibonacci[i] = Fibonacci[i-2] + Fibonacci[i-1];
for (i = 0; i < numFibs; ++i)
printf( "%llu ", Fibonacci[i]);

printf( "\n ");
return 0;
}

[解决办法]
用gcc吧,
vc,tc都不支持 变长数组的
[解决办法]
你的编译器没支持C99的变长数组,WINDOWS下用dev-cpp,Linux用gcc
[解决办法]
C++看似只支持定长的数组声明吧?
就是int a[10];

#define MAX 10
int a[MAX];

const int MAX=10;
int a[MAX];
都是可以的
但是int max=3;
int a[max]就是不可以的
因为数组空间的分配是在编译的时候确定的,前三种在编译的时候都可以确定数组空间大小为3,而最后一种只有在执行的时候才能够确定max的值为3,何况说不定中间还有那句话再给max赋个值,那就连3都不是了,所以最后一种不行,可以改成
int max=3;
int* a=new int[max];

也就是把unsigned long long int Fibonacci[numFibs];改成上面说的那样

读书人网 >C语言

热点推荐