主题:路过的,有能力就帮帮忙啊,大家都是来学习的,为何不呢?
tulingjiang
[专家分:20] 发布于 2012-03-11 21:29:00
#include<stdio.h>
void main()
{int i,j,x=0;
static int a[8][8];
for(i=0;i<3;i++)
for(j=0;j<3;j++)
a[i][j]=2*i+j;
for(i=0;i<8;i++)
x+=a[i][j];
printf("%d\n",x);
}
为什么结果是 0 呢?
回复列表 (共3个回复)
板凳
tulingjiang [专家分:20] 发布于 2012-03-12 10:23:00
我在电脑上运行了,如果去除static,结果是1717986912,能解释这个结果吗?是不是初始不赋值产生的不可预期的值。我把static int a[8][8];改为int a[8][8] ={0};后,运行结果也是0.这是为什么呢?难道运算过程中没有改变吗?还是运算的结果就应该是这个值呢?
3 楼
tulingjiang [专家分:20] 发布于 2012-03-12 10:31:00
哎呀,对了,应该是这样吧?for(i=0;i<8;i++) x+=a[i][j];这里的j=3;而上面的两个for语句进行赋值时,只是对a[0][0],a[0][1],a[0]2],a[1][0],a[1][1],a[1][2],a[2][0],a[2][1],a[2][2],这9个数组元素进行了赋值,而其它的依然是0。
我来回复