我是这样写的 if(a[x][y]=='\0') 我用断点调试每次运行到这里好像都会发生错误,不知道是不是我写错了,求解答
我把int型的a改为char型的了,数组为a[5][5],在执行到以下循环前x=4,y=3,但是用断点调试时发现明明a[x][y]=='\0'这个条件是真(说明:a[4][3]我没赋过值),但却去执行else的内容了
if(a[x][y]=='\0')
{
i=x;
j=y;
}
else i++;
}
其实不知道我要编什么的话估计也弄不清我的代码,所以之前都没发代码
#include<stdio.h>
int main()
{
int i=0,j=2,x,y,n=2;
char a[5][5];
a[0][2]=1;
for(n=2;n<=25,n++)
{
x=i;y=j;
x--;y++;
if(i==0&&j==4)
i++;
else
{
if(x<0) x=4;
if(y>4) y=0;
if(a[x][y]=='\0')
{
i=x;
j=y;
}
else i++;
}
a[i][j]=n;
}
for(i=0;i<=4;i++)
for(j=0;j<=4;j++)
{
printf("%5d",a[i][j]);
if(j%4==0) printf("\n");
}
return 0;
}
char a[5][5]; 或 int a[5][5]; 放到 main() 以前,处理为全局量,编译时会初始化为0。(若作局部量,未赋值时,元素的值不是0,不是NULL,不是'\0'。难以判断是否为“空”)
-物联网校企联盟技术部
a是char型吗追问
a是int型的
追答int型这样写没有意义,'\0'就是0,与==0是一样的
》》(说明:a[4][3]我没赋过值),但却去执行else的内容了
如果没赋过值,则是随机的(与编译器有关),这样判断不行。