回 帖 发 新 帖 刷新版面

主题:路过的,有能力就帮帮忙啊,大家都是来学习的,为何不呢?


#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个回复)

沙发

静态数据,初始化为0

板凳


我在电脑上运行了,如果去除static,结果是1717986912,能解释这个结果吗?是不是初始不赋值产生的不可预期的值。我把static int a[8][8];改为int a[8][8] ={0};后,运行结果也是0.这是为什么呢?难道运算过程中没有改变吗?还是运算的结果就应该是这个值呢?

3 楼


哎呀,对了,应该是这样吧?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。

我来回复

您尚未登录,请登录后再回复。点此登录或注册