static int a[10],a[10]=5,为什么在c++里面能通过,而且编译正确?

如题所述

第1个回答  2017-06-24
写成static int a[10],a[10]=5,这样若作为语句,C++、C都通不过;写成static int a[10],a[10]=5;这样,C++、C都能通过——因为C/C++并不检查边界。追问

但是运行也没有问题,如果不加static给它赋值运行就出问题

第2个回答  2017-06-24
编译器对下标越界并不警告追问

但是运行也没有问题,如果不加static给它赋值运行就出问题

追答

下标越界不是每次都会出问题,只有越界修改了数组以外的内容,并且此内容关乎系统的正常运行才会有问题,否则是没有什么异常表现的。至于不用static就出问题的情况。我不清楚

本回答被提问者采纳
第3个回答  2017-06-24
那你改成const试试
相似回答