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