输入一组字符,以“#”结束。
int main()
{
char a[10];
int i,j;
for(i=0;i<10&&a[i]!='#';i++)
{
scanf("%c",&a[i]);
printf("%c ",j);
}
int main()
{
char a[10];
int i,j;
for(i=0;i<10&&j!='#';i++)
{
scanf("%c",&a[i]);
j=a[i];
printf("%c ",j);
}
这是什么原理??
每次循环结束之后i自动加1,此时与#比较的并不是读入#的那个a[i];
而使用j之后仍然保留上一次的值;
简单来说,按照你的代码流程如下(假定输入1#1)
i=0 比较a[0]与# 然后a[0]=1,j=1
i=1 比较a[1]与# a[1]=#,j=#
i=2 此时比较的是a[2]与#而不是a[1]与# 所以无法中断(如果使用j就是上一次读入的值)
就是“”zhouhouqiu“”说的意思
zhouhouqiu
j='#'这个是赋值语句,而不是等于,用a[i]!='#'表示不等于,意义不一样。
a[i] != '#'的就判断,在a[i]被赋值之前,所以不对。