getchar()的返回值类型
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
getchar()函数的返回值类型
char c;
c=getchar();
if(c==EOF)
...
这条语句潜在的危险就连许多高手都难以察觉,其责任并不在用户,是函数getchar误导了使用者。
看一下getchar的原型:
int getchar(void);
那么,上面那个例子,由于c是char类型,取值范围是[-128,127],如果宏EOF的值在char的取值范围之外,那么if语句将总是失败,像我们这种在门外徘徊的探头探脑的人们,怎么会懂这么多恩??
于是乎,又有个问题,为什么c标准库函数的设计者要将getchar声明为令人迷糊的int
类型呢?
答案很简单:在正常情况下,getchar的确返回单个字符。
但如果getchar碰到文件结束标志或发生读错误,它必须返回一个EOF。
为了区别于正常的字符,只好将EOF定义为负数(通常为-1)。
因此函数getchar就设置成了int类型。