全部博文(103)
分类: C/C++
2007-12-22 00:27:42
int getchar(void);
那么,上面那个例子,由于c是char类型,取值范围是[-128,127],如果宏EOF的值在char的取值范围之外,那么if语句将总是失败,像我们这种在门外徘徊的探头探脑的人们,怎么会懂这么多恩??
于是乎,又有个问题,为什么c标准库函数的设计者要将getchar声明为令人迷糊的int类型呢?
答案很简单:在正常情况下,getchar的确返回单个字符。但如果getchar碰到文件结束标志或发生读错误,它必须返回一个EOF。为了区别于正常的字符,只好将EOF定义为负数(通常为-1)。因此函数getchar就设置成了int类型。
说明: getchar是一个宏,用于返回指定的stdin输入流的下一个字符, 它定义为getc(stdin)。
返回值: 调用成功时,getchar返回所读的字符,它已被转换为无符号扩展的整形值。在遇到文件结束或出错时,返回EOF。
可移植性 getchar适用于UNIX系统,在ANSI C中定义,与Kernighan和Ritchie的定义兼容