getchar():在32位操作系統(tǒng)下钙皮,讀取一個字節(jié)。
char:是c/c++整型數(shù)據(jù)中比較古怪的一個仅胞,在標準中是unsigned押赊。編輯器可實現(xiàn)為帶符號的饺藤,也可實現(xiàn)為不帶符號的。
[程序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;
}
對比以上兩個程序可以發(fā)現(xiàn)流礁,定義變量c的地方不同涕俗,其余都一樣。EOF是結(jié)束符(End Of File神帅,文件結(jié)束)再姑,值是必須足夠大,除了能存儲任何可能的字符外還要能存儲文件結(jié)束符EOF找御。
char是signed的系統(tǒng)中:EOF的值是-1元镀,讀取中文時绍填,,中斷調(diào)試下栖疑,每次讀取一個字節(jié)讨永,定義為int時,變量c的值在0~127之外遇革,>127卿闹,定義為char時由于char是signed,所以能識別負值萝快,結(jié)果不受影響锻霎。
char是unsigned的系統(tǒng)中,變量c定義為int時揪漩,沒有問題旋恼,如果為char時,由于不接受負值氢拥,會出現(xiàn)問題蚌铜。
所以綜合考慮,建議使用定義int型嫩海,保證程序兼容性。