C程序大虾来看看啊!

来源:百度知道 编辑:UC知道 时间:2024/06/23 00:03:33
main()
{int n[2],i,j,k;
for(i=0;i<2;i++) n[i]=0;
k=2;
for(i=0;i<k;i++)
for(j=0;j<k;j++) n[j]=n[i]+1;
printf("%d\n",n[2]);}

已经定义了数组为a[2]了,那a[2]是表示哪个地址的数据呢?
在TC2里运行这个程序没错了,结果是2.
请大虾们指点迷津!!!!
那为什么越界还点会有答案?
没有调查就没有发言权。已经试过是行的。大家可以用TC2运行一下再说吗?

a[2]就越界了,在C中定义了a[2]其元素分别是a[0]与a[1]。

*****************************************************

因为C系统对数组边界检查不像其它语言那样严格,所以即使越界也不会提示出错,只会给出预料之外的值。因此确保数组下标不越界是C程序作者的责任。

是啊,程序没错,可是越界了,跟定义的已经没有关系了

都是我不好乱说话,那不好意识啊! 是我菜鸟!!!!我封嘴!
帮忙帮出毛病了!!