心 空

  • Tools
Ricky Hao
  1. 首页
  2. C
  3. 正文

C语言 while((ch=getchar())!=EOF) 的问题

7 9 月, 2015 3361点热度 3人点赞 0条评论

以前,经常使用while((ch=getchar()!=EOF)来作为程序读取输入的结束。
但是,今天发现,这个EOF的类型是整形。
然而,我们经常是将ch定义为字符型:char ch;
这样就造成了一个问题:getchar()读取输入的EOF的时候,读取的是整形数。然而,这个数字比char类型(-128~127)要大.所以,getchar()在赋值给ch的时候,会造成该数值被截短的现象。然后ch经过提升为整形之后再与EOF作比较的时候是不会相等的。
这就有可能使得程序在输入EOF的时候并不会停止。或者是在键入\377的时候,注入终止(因为这个值截短再提升之后与EOF相等)。
基于以上原因,我们就要避免使用

while((ch=getchar())!=EOF)
本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可
标签: C
最后更新:7 9 月, 2015

Ricky

这个人很懒,什么都没留下

点赞
< 上一篇
下一篇 >

文章评论

razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
取消回复

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理。

COPYRIGHT © 2025 心 空. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang