while((a=getchar())!='\n')中括上a=getchar()括号的作用?

#include"stdio.h"
main(){
char a;
int z=0,x=0,c=0,v=0;
while((a=getchar())!='\n')
{
if(a>='a'&&a<='z'||a>='A'&&a<='Z')
z++;
else if(a==' ')
x++;
else if(a>='0'&&a<='9')
c++;
else
v++;
}
printf("zm=%d,kg=%d,sz=%d,qt=%d",z,x,c,v);
}
再写这段编码的时候不知道括上a=getchar的括号的作用

a=getchar()!='\n',先调用getchar,等待你输入,输入后如果你输入的不是回车,a为true,否则a为false,这是a是一个布尔值

加上括号后,a保存了你输入的那个字符。

从后文看,还要把a和空格,'0' '9'等进行比较,因此需要的是加粗那一行的行为,即a保存了一个字符,而不是一个布尔值。

这个行为不同的原因是运算符优先级带来的,== `=这些逻辑符,比=赋值要高,是优先计算,也就是说你不加括号,等同于后面加括号:即

a=getchar()!='\n' 

等价于

a=(getchar()!='\n'),这显然不是你想要的结果。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-11-26
运算符的优先级是!=比=高。
相似回答