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

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

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

[程序2]

#include<stdio.h>
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型,保证程序兼容性。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容