c数组输出问题
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",x);
为什么结果是0
[解决办法]
引用:
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];//j==3
printf("%d",x);
[解决办法]
[解决办法]
分为几部分来说明:
1、static int a[8][8]; a是静态变量那么在定义的时候由于没有初始化默认情况下他和全局变量一样都将全部被初始化为0.
2、for(i=0;i<3;i++)
for(j=0;j<3;j++)
a[i][j]=2*i+j;
这里只对前 3*3 赋值。
3、for(i=0;i<8;i++)
x+=a[i][j];
执行到这里的时候 j = 3; 而 j = 3 这部分你还没给他重新赋值所以他的值还是初始值 0 所以你的结果必然是0
[解决办法]
- C/C++ code
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]; // j = 3 printf("%d",x); }
[解决办法]
就是这样的[解决办法]
分析的很正确。
[解决办法]
[解决办法]
在做这个循环的时候
- C/C++ code
for(i=0;i<8;i++)x+=a[i][j];