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

作者: Easting_C | 来源:发表于2015-04-08 12:05 被阅读121次

    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型,保证程序兼容性。

    相关文章

      网友评论

      本文标题:C语言--getchar()变量类型探究

      本文链接:https://www.haomeiwen.com/subject/ktbzxttx.html