C语言字符型数据问题

若变量已正确定义,在执行以下while语句时,输入字符A后,ch的值是_____while(ch=getchar()=='A'); 为什么ch为0

while(ch=getchar()=='A');
这个其实执行了两次,
你输入了A后敲了回车,这时getchar()得到的是字符'A',由于==的优先级高于=
所以getchar()=='A' 先执行,'A' == 'A',这个表达式值为1(真),所以ch=1,这是while中的条件也为1,所以while继续执行。
这是读入的字符是回车符,回车符显然≠'A',所以getchar()=='A' 这个表达式的值为0(假),所以ch=0,这是while里的条件为0了,所以while退出。
所以ch为0
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-07-12
=和==的优先级不一样!==的优先级高于=,所以表达式ch=getchar()=='A'相当于ch=(getchar()=='A')
----------------------------------一楼正解!
第2个回答  2011-07-12
式子先判断getchar()=='A'为真或假,真的话将1赋值给ch,假就赋0,因为输入A时为真,ch=1,接着循环,循环到第二次为假,ch=0循环语句就没法执行了,跳出循环语句,最后结果ch为0
相似回答