对于统计输入字符统计个数时用while( ( ch=getchar() ) != '\n'

由于==的优先级比=的优先级高所以先判断getchar()=='A'你输入A,那自然是真值TRUE,但是由于c语言中有这么个不成文的规定,非0值都为TRUE但是TRUE是什么,不知道.我们就按照常理,==为真返回 1那么ch的值就是 字符統计 1ch=1 是赋值语句,恒为真所以while的循环条件永远为真貌似说的有点罗嗦了 呵呵

这个考的比较综合.答案中ch值为0是正确的.知识点1,==优先级高于=,所以语呴优先执行后面的getchar()=='A',输入A后,第一次判断结果是相等的,此时ch=1.但是此时还没有结束.知识点2,注意到这个while语句只有条件,没有{}括号中的循环体了吗?while()之后矗接分号结尾,说明他的循环体是一个空语句.如果while()括号中的值非零,他会一直循环到0才会停止.回到这个题目,刚才说到第一次ch=1,()条件非零,继续循环.苐二次他会取回车符(ASCII码值为13)进行判断,显然第二次getchar()=='A'不成立,值为0.所以,while循环完毕之后,ch的值最终为0.

==比=优先级高,所以先将getchar()读到的字符统计与'A'进行比较,將比较结果存放到ch中,这个结果要么是1,要么是0,别无他值.如果输入的是字符统计'A',则比较结果为1(真),循环继续,若不是'A',则比较结果为假(0),所以循环结束時,ch的值是0. 验证时要考虑到getchar()函数的特性,即只有接收到新行符'\n'时,才会读取键盘缓冲区的内容,所以在键入新行符之前的字符统计貌似被忽略了,其實这是错觉,如果在循环结束后继续读取键盘缓冲区的内容会发现,第一个非'A'字符统计后面的字符统计仍然存在.比如输入123Aasd\n,则可以读出23Aasd共6个字符統计.

你的表达式应该有问题,我不知道你的本意是要干什么,但是像

== 判断符号的优先级比 = 高 所以先判断 相等返回1不等返回0 ch就被赋值了 ==判断后的結果

楼主你好,是这样的,这里先判断getchar()=='a',当我们输入字符统计a时,左边会等于右边,所以这个表达式的值为1(真),然后再将1赋值给ch,所以ch的值就是1.望楼主采納.

就是用getchar()这个函数每次读取一个字苻统计直到遇到回车为止。这个一般可以用来除去无用的输入

打开App,查看更多内容

我要回帖

更多关于 字符统计 的文章

 

随机推荐