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

admin 2021年9月1日14:59:14评论115 views字数 500阅读1分40秒阅读模式

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

while((ch=getchar())!=EOF)

FROM :rickyhao.com | rickyhao.com

相关推荐: Flare-on Challenge 2017 部分题解

Flare-on Challenge 2017 部分题解 Last updated:Oct.22, 2017 CST 18:38:42 Flare-on Challenge 2017 部分题解 ROT13 Igniteme Greektome Notepad …

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2021年9月1日14:59:14
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   C语言 while((ch=getchar())!=EOF) 的问题https://cn-sec.com/archives/499748.html

发表评论

匿名网友 填写信息