若变量已正确定义,在执行以下while语句时,输入字符A后,ch的值是_____
while(ch=getchar()=='A');
为什么ch为0
若变量已正确定义,在执行以下while语句时,输入字符A后,ch的值是_____
while(ch=getchar()=='A');
为什么ch为0
=的优先级低于==,所以总是先运行getchar()=='A' ,而ch就只能有两种情况0或者1 (假或真)
输入A再按回车,getchar()收到的是两次输入,第一次为A,此时ch=1是不会退出while循环。 第二次为回车,回车不为A,此时ch=0退出循环。这是整个过程
为何如此保守的贴出一句?
你怎么看到ch为0的?
第一次进入循环时,在条件判断语句处中断,等待getchar返回
你输入A后,必须按下回车键才能让getchar接收到键盘输入
这时,ch = (getchar() == 'A') //这里ch为真
这时while以ch的值为条件,判断为真,进入循环内部,虽然你这里是没有循环内部语句块,但要理解while的流程,它在运行完内部语句块后,又继续检查你的条件语句,ok,现在getchar直接返回了,因为上一次输入时输入了A,但也包括了回车键入的ASCII码10,所以这时ch = (10 == 'A'),即ch为假,循环退出,而你再输出ch的话,也就是假,即0了