一道c语言填空题,求解!
若变量已正确定义,在执行以下while语句是,输入字符A后,ch的值是(?)while(ch=getchar()=='A');/*正确答案是0*/这里是怎么运算,赋值的?...
若变量已正确定义,在执行以下while语句是,输入字符A后,ch的值是( ? )
while(ch=getchar()=='A'); /*正确答案是0*/
这里是怎么运算,赋值的?求详细解释!!! 展开
while(ch=getchar()=='A'); /*正确答案是0*/
这里是怎么运算,赋值的?求详细解释!!! 展开
2个回答
展开全部
== 恒等于运算符 的优先级 高于 =等于赋值运算符,所以 先进行了getchar()=='A',成立,故getchar()=='A'的结果=1,所以ch=1,while 里面的条件为真,继续执行该语句,又进行一次里面的赋值过程,此时getchar 为空白' ',不等于'A',故getchar()=='A'不成立,ch=0;while 条件为假,结束运行。
追问
我有搜到这道题的原型了,你看看:
http://zhidao.baidu.com/question/276256560.html
你说的很对 问题就出在 输入字符A后 表达式应该成立应该结果是1 怎么会是0 呢????
回答:
因为你输入的时候至少输入了两个字符,一般是A,输入第一个字符'A'时,getchar( )=='A'为值,ch=1;输入第二个字符时,getchar( )=='A'为假,ch=0。其中表示回车。
你看看是不是这样?
追答
不管你第二个字符是否,一旦执行了第一个A后,成立,就会继续执行第二次,而这次肯定不是 A,所以 getchar( )=='A' 就会是假,ch=0
2012-02-06
展开全部
ch=getchar()=='A' 等价于 ch= (getchar()=='A' ) 优先级问题
这类问题没太大意义 工作中一般遇到都会加上括号!
这类问题没太大意义 工作中一般遇到都会加上括号!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询