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:[0,255]get
程序2:io
char是signed的系統中:[-127,127]class
char是unsigned的系統中:[0,127]變量
咱們能夠發現,int型的範圍和signed範圍是等價的,而unsigned範圍不能判斷負數(或者是大於127的字符)。
因此綜合考慮,建議使用int型,保證程序兼容性。兼容性