C语言数组个数的定义a[]

#include
#include
static long int a[1000000000];
int main()
{

}
这个代码,为什么a[]中0为9个就会报错,但是多余或者少于9个都不会报错?


整数最大是2^32是4294967296,如果有符号,那么还得除一半。9位数就超了。

你定义的数组0多于9个能够编译通过吗?按理说只有少于9个的时候,才能够正确的编译通过的;我亲自编译后仅当0少于9个的时候才能编译通过的;
至于为什么申请这么大的内存空间会编译失败呢是因为堆区和栈区的空间是有限的;编译器都是有着严格的规定;你一次申请这么大的连续的内存空间,
肯定是不能够得到保证的,同时你申请的内存空间不能够超过编译器的限定;

可能定义错误,没有ststic long int
这种的吧,改成signed long int 试试

你的数据溢出来 建议换成long int. 或者long long 型

建议换成long long 型 最好在主函数外定义