C語言變量類型定義之getchar()

getchar() : 在32位操做系統下,讀取一個字節c++

[程序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的地方不一樣,其他都同樣。
char : c/c++整型數據中比較古怪的一個,在標準中是unsigned。編輯器可實現爲帶符號的,也可實現爲不帶符號的。調試

採用中斷調試能夠發現,每一個字節的範圍:code

  1. 程序1:[0,255]get

  2. 程序2:io

    • char是signed的系統中:[-127,127]class

    • char是unsigned的系統中:[0,127]變量

咱們能夠發現,int型的範圍和signed範圍是等價的,而unsigned範圍不能判斷負數(或者是大於127的字符)。
因此綜合考慮,建議使用int型,保證程序兼容性。兼容性

相關文章
相關標籤/搜索