为什么下面的结果运行后,输出结果是0?

来源:百度知道 编辑:UC知道 时间:2024/07/04 18:07:31
int i,j,x = 0;
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",x);

for(i=0;i<8;i++)
x += a[i][j];
printf("%d",x);

j=3

大哥,注意j指针,x加的都是0!
(实际运行时为x += a[i][3]

飘过
C语言这种不严谨的写法看着迷糊

我用的是Microsoft Visual C++ 6.0调试,没有得到0,而是得到1717986912
int i,j,x = 0;
int a[8][8];
for(i=0;i<3;i++)
for(j=0;j<3;j++)
a[i][j] = 2 * i + j; //双重循环将a[0][0]~a[0][2]赋值为0,1,2.
// a[1][0]~a[1][2]赋值为2,3,4
// a[2][0]~a[2][2]赋值为4,5,6
//双重循环停止时,j=3
for(i=0;i<8;i++)
x += a[i][j]; //单循环把a[0][3],a[1][3],a[2][3],a[3][3],a[4][3]
//a[5][3],a[6][3],a[7][3]累加起来放在X里,
//在程序是没有赋值的数组值为随机数.
printf("%d",x);