看一个C语言题,这个题为什么把ch=getchar()括起来

如题所述

“=”的结合时从右到左
ch=getchar(),是一个整体
我是要先输入一个字符并且赋值给ch,
在把ch和其它字符比较
故要加括号追问

还是不明白

追答

(ch=getchar())!=‘N ’
首先出现这个,他想要实现的就是
接收字符给ch,再把ch和N比较
这一题主要考察”=“的结合,首先!=,==
优先级高于=
是从右到左的
不打括号执行结果也是一样。
不打括号就是输入一个字符
和N比较把比较的结果赋值给
ch
但是违背了他想考的内容

追问

还是不懂呀

追答#include<stdio.h>
void main()
{
char ch,ch1;
if (ch=getchar()=='N')//这是先判断是否想等,在把判断结果赋给ch,ch=0 或者1
{
printf("%d",ch);//我的输出是%d
}
putchar('\n');
getchar();
if ((ch1=getchar())=='N')//输入字符给ch1,在判断是否相等ch1  存的是输入字符
{
printf("%d",ch1);
}
}

 

追问

不打括号,先执行getchar()!='N'对吧?

追答

对的,执行结果要么是真要么是假
也就是把0或者1
赋给ch

追问

getchar()!='N'的结果是1或0,然后1或0再赋给ch?

追答

false 或者true 赋给ch

追问

太谢谢了

这个题呢

判断循环结束的条件是什么呀

追答

循环条件是a是否为0
++c是先自增
a=6 b=0 c=0
b+=a 就是b=b+a=6 a-=++c 就是a=a-(++c)=6-1=5 c=1
a=5 b=6 c=1
b=b+a=11 a=a-(++c)=5-2=3 c=2
a=3 b=11 c=2
b=b+a=14 a=a-(++c)=3-3=0 c=3
b=14 a=0 c=3
for(;a;)//a=0 跳出循环
选择A

追问

我不理解的是for( ;a;),这个a让我怎么判断呀

a到0的时候结束循环吗?

追答

for(;a;)
a是循环条件
当a大于0执行循环体,在判断
a是否大于0,在执行循环体
知道a<=0跳出循环

追问

单个一个a是a大于0时执行循环呀!

我刚运行了一下那个题,我输入非N字母时,显示的都是个笑脸,输入N时,显示N

这不符合那个true和false呀

追答#include<stdio.h>
int main()
{
char f=1;
printf("%c\n",f);

return 0;

}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-09-06
getchar()是接收一个你输入的字符 他的函数原型就是这样的 ch=getchar() 就是把你接收的字符 存在ch里面追问

还是不明白为什么要把它整体括起来

追答

主要是优先级的问题了 while((ch=getchar())!='N') 它是把你接受的字符存在成立面 再与N比较是否相等 如果你不打括号 他就先执行 !=

追问

不打括号,先执行getchar()!='N'对吧?

追答

是的

追问

那这个getchar()!='N'能执行出什么结果呢?

追答

不能这样比较的 你只能先赋给一个变量才能进行比较 所以ch=getchar()在拿ch与n比较

追问

又不懂了

相似回答