超长数组的长度问题?请高手帮忙
#include<conio.h>
#include<stdlib.h>
#include <time.h>
#include <dos.h>
unsigned long random2(unsigned long num) {return rand()*num/(RAND_MAX+1);}
int main(void)
{
printf("Hello, world\n");
unsigned long i,t;
unsigned long n=20000;
unsigned long* a ;
a = (unsigned long*)malloc(n*sizeof(unsigned long));
randomize();
// long n2=n;
for(i=1;i<=n;i++){
t=random2(n);
a[i]=t;
printf("\na[%ld]=%ld",i,t);
}
getch();
free(a);
return 0;
}
我运行程序后,我看数组的长度只有15493,而不是我所定义的20000。为什么?有什么解决办法,请高手支招。。谢谢