一,a[i][j] = {{0}}
第一种情况:a[3][3] = {{0}};
#include<stdio.h>
int main()
{
int i,j;
int a[3][3] = {{0}};
for(i = 0; i < 3; i++)
{
for(j = 0; j < 3; j++)
{
printf("%d",a[i][j]);
}
printf("\n");
}
}
运行结果:
第二种情况:a[0][0] ={{1}};
#include<stdio.h>
int main()
{
int i,j;
int a[3][3] = {{1}};
for(i = 0; i < 3; i++)
{
for(j = 0; j < 3; j++)
{
printf("%d",a[i][j]);
}
printf("\n");
}
}
运行结果:
结论一:a[3][3] = {{0}};中"0"只为a[0][0]赋值,其余没有被赋值的位默认赋值为0。
由此,推论a[3][3] = {{1,1}};的结果应是a[0][0] = 1,a[0][1] = 1
第三种情况:int a[3][3] = {{1,1}};
#include<stdio.h>
int main()
{
int i,j;
int a[3][3] = {{1,1}};
for(i = 0; i < 3; i++)
{
for(j = 0; j < 3; j++)
{
printf("%d",a[i][j]);
}
printf("\n");
}
}
运行结果:
结论:未赋值的位默认赋值为0。
{{1}} = {{1,0,0},{0,0,0},{0,0,0}};
{{1,1}}={{1,1,0},{0,0,0},{0,0,0}};
第四种情况:a[3][3] = {{1,1},{1,1}};
#include<stdio.h>
int main()
{
int i,j;
int a[3][3] = {{1,1},{1,1}};
for(i = 0; i < 3; i++)
{
for(j = 0; j < 3; j++)
{
printf("%d",a[i][j]);
}
printf("\n");
}
}
运行结果:
第五种情况:
#include<stdio.h>
int main()
{
int i,j;
int a[3][3] = {{1,1,1,1}};
for(i = 0; i < 3; i++)
{
for(j = 0; j < 3; j++)
{
printf("%d",a[i][j]);
}
printf("\n");
}
}
运行结果:
结论:当第一行赋值超过位数时,多余数据溢出,其他行默认赋值为0。
二,a[i][j] = {0}
第一种情况:
#include<stdio.h>
int main()
{
int i,j;
int a[3][3] = {1};
for(i = 0; i < 3; i++)
{
for(j = 0; j < 3; j++)
{
printf("%d",a[i][j]);
}
printf("\n");
}
}
运行结果:
第二种情况:
#include<stdio.h>
int main()
{
int i,j;
int a[3][3] = {1,1};
for(i = 0; i < 3; i++)
{
for(j = 0; j < 3; j++)
{
printf("%d",a[i][j]);
}
printf("\n");
}
}
运行结果:
第三种情况:
#include<stdio.h>
int main()
{
int i,j;
int a[3][3] = {1,1},{1,1};
for(i = 0; i < 3; i++)
{
for(j = 0; j < 3; j++)
{
printf("%d",a[i][j]);
}
printf("\n");
}
}
运行结果:
第四种情况:
#include<stdio.h>
int main()
{
int i,j;
int a[3][3] = {1,1,1,1};
for(i = 0; i < 3; i++)
{
for(j = 0; j < 3; j++)
{
printf("%d",a[i][j]);
}
printf("\n");
}
}
运行结果:
结论:当第一行赋值完后,如果还有数据没有赋值时,自动转至下一行。