如下C程序,输出结果 A)不确定的值 B)3 C) 2 D)1 为什么是A????

#include<stdio.h>
main()
{ int n[2]={0},i,j,k=2;
for(i=0;i<k;i++)
for (j=0;j<k;j++) n[j]=n[i]+1;
printf("%d\n",n[k]);
}
我运行后得到结果 1245064.和A是一回事吗?为什么是这个结果????求高手解答!!!!!

就是不确定的值,
因为n数组的上限是2。 而k = 2
所以n[k]这是越界的,也就是这已经不是n的数组了,而是其他乱七八糟的值。追问

可是为什么我每次得到的都是1245064这个结果?

追答

是随机的,也有可能是编译器有关。

for(i=0;i<k;i++)
for (j=0;j<k;j++) n[j]=n[i]+1;
printf("%d\n",n[k]);

跟 for(i=0;i<k;i++)
for (j=0;j<k;j++) n[j]=n[i]+1;
这一段有关,你把它去掉。
这可能是编译器的优化功能。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-12-16
数组n[2]的下标是从0开始的,上限是1,所以n[2]是越界了,当然不确定了。
第2个回答  2014-12-16
多运行几次就知道了,想知道为什么自己去调试被

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网