#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的数组了,而是其他乱七八糟的值。追问
因为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
多运行几次就知道了,想知道为什么自己去调试被