以前,经常使用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 …
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论