c语言:while( ch=getchar()=='A');

若变量已正确定义,在执行以下语句while语句时,输入字符A后,ch的值为0,这么理解?
怎么理解?

这个考的比较综合。答案中ch值为0是正确的。
知识点1,==优先级高于=,所以语句优先执行后面的getchar()=='A',输入A后,第一次判断结果是相等的,此时ch=1。但是此时还没有结束。
知识点2,注意到这个while语句只有条件,没有{}括号中的循环体了吗?while()之后直接分号结尾,说明他的循环体是一个空语句。如果while()括号中的值非零,他会一直循环到0才会停止。
回到这个题目,刚才说到第一次ch=1,()条件非零,继续循环。第二次他会取回车符(ASCII码值为13)进行判断,显然第二次getchar()=='A'不成立,值为0。所以,while循环完毕之后,ch的值最终为0。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-06-29
题目有问题,这道题不用理会。
全国计算机等级考试二级c教程75页填空6.14原题。
我先回复占位,然后慢慢敲内容追问

是啊,就是这本书的,那正确答案是什么?

追答

先补充知识,c中输入类函数执行时,键盘敲入的字符会送到标准输入流stdin中,你就当成一个特殊的空间就行了,按照敲击顺序顺次写入这片空间,直到敲击回车,回车也写入这片空间以后,所敲入的内容才会送交给程序去执行。
这也就是
while(( ch=getchar())!='\n');执行时,不是敲一个字符执行一次,而是所有字符敲击完毕,敲击回车才会批量执行的原因。

还有另外涉及的到的一个,赋值表达式,返回值是被赋予的值。
也就是a=6这个表达式的返回值是6

这道题其实在提醒你,在使用这个结构的时候,( ch=getchar() )最外面这层小括号千万不能丢。

该所的都说完了,下面分析:

可能1:
光标闪烁等待输入,你只敲了A,没敲回车,此时程序依旧是暂停等待输入状态,甚至这个A依旧在输入流之中,没有送交给程序去执行,此时此刻ch的值依旧是之前最近一次被赋予的值。

下列可能基于一个前提:
光标闪烁等待输入,你只敲了A,并且敲回车,此时输入流把A和回车都递交给了程序去执行。

********************************
文字超出最大限制。
我先回复这些,你随便追问点什么,我把后续部分作为追问回复贴上

本回答被提问者和网友采纳

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网