C语言--getchar()变量类型探究

getchar():在32位操作系统下,读取一个字节。
char:是c/c++整型数据中比较古怪的一个,在标准中是unsigned。编辑器可实现为带符号的,也可实现为不带符号的。
[程序1]

#include
main()
{
    int c;  //定义为int类型
    c=getchar();
    while(c!=EOF)
    {
        putchar(c);
        c=getchar();
    }
    return 0;
}

[程序2]

#include
main()
{
    char c; //定义为char类型
    c=getchar();
    while(c!=EOF)
    {
        putchar(c);
        c=getchar();
    }
    return 0;
}

对比以上两个程序可以发现,定义变量c的地方不同,其余都一样。EOF是结束符(End Of File,文件结束),值是必须足够大,除了能存储任何可能的字符外还要能存储文件结束符EOF。
char是signed的系统中:EOF的值是-1,读取中文时,,中断调试下,每次读取一个字节,定义为int时,变量c的值在0~127之外,>127,定义为char时由于char是signed,所以能识别负值,结果不受影响。
char是unsigned的系统中,变量c定义为int时,没有问题,如果为char时,由于不接受负值,会出现问题。
所以综合考虑,建议使用定义int型,保证程序兼容性。

你可能感兴趣的:(C语言--getchar()变量类型探究)