为什么getchar()的值是一个int?

来源:百度知道 编辑:UC知道 时间:2024/05/23 00:28:38

这是为了避免一些兼容上的问题。在Andrew Koenig的著作《C陷阱与缺陷》5.1节中是这样解释的:
“getchar函数在一般情况下返回的是标准输入文件中的下一个字符,当没有输入时返回EOF(一个在头文件stdio.h中被定义的值,不同于任何一个字符)。”
由于EOF不同于任何一个字符,如果程序中的getchar如果返回的是char类型,而不是int类型,就意味着返回值无法容下所有可能的字符,特别是,可能无法容下EOF。

另外,Koenig还指出,如果将getchar的返回值赋值后还要参与判断,那么也应该使用int型的变量,如:
#include <stdio.h>
main()
{
int c; /* 这里如果用char c在一些环境下会死循环出错 */
while ( (c = getchar()) != EOF )
putchar(c);
}

那得看你在什么地方用的啊~!!
哪可能都是int ~!

字符用ASCII值表示