C语言问题,为什么输出全是笑脸
来源:百度知道 编辑:UC知道 时间:2024/06/25 03:26:41
#include<stdio.h>
main()
{ char a[80];
int n=0;
while(a[n]=getchar()!='\n')
n++;
a[n]='\0';
n=n-1;
for(;n>=0;--n)
putchar(a[n]);
}
main()
{ char a[80];
int n=0;
while(a[n]=getchar()!='\n')
n++;
a[n]='\0';
n=n-1;
for(;n>=0;--n)
putchar(a[n]);
}
运算符的优先级没有弄清楚
逻辑运算符的优先级比赋值运算符的优先级要高!
所以你的while是先判断getchar!='\n' 这个只要成立就为1
所以赋值的时候总是将1赋值给你的数组里了
而输出的时候ASCII为1的字符就是你看到的那个笑脸!
改:
#include<stdio.h>
main()
{ char a[80];
int n=0;
while(a[n]=getchar()!='\n') //该成while((a[n]=getchar())!='\n')
n++;
a[n]='\0';
n=n-1;
for(;n>=0;--n)
putchar(a[n]);
}
while(a[n]=getchar()!='\n')
中的a[n]=getchar()!='\n'相当于
a[n]=(getchar()!='\n')
所以a[n]=1;
ascii码为1的是笑脸
所以输出全是笑脸
把“while(a[n]=getchar()!='\n') ”一句中的 “a[n]=getchar()”用括号括起来,改为:while((a[n]=getchar())!='\n')
将这一句改成这样就可以了while( (a[n]=getchar())!='\n')
运算符优先级的问题 while(a[n]=getchar()!='\n') 语句中!=优先运算 其值为1 char a[n]=1 为笑脸 如果是int 则是1了
看看是不是数组的问题。