我正在使用 Visual Studio 2010 运行以下简单程序。目的是看看如果我将变量定义c
为char
or会发生什么int
,因为该getchar()
函数返回一个整数(C 编程语言中广为人知的陷阱,请参阅int c = getchar ()?)。
#include <stdio.h>
int main()
{
char c;
//int c;
while((c = getchar()) != EOF)
putchar(c);
printf("%d\n",c);
return 0;
}
当我从控制台输入一些字符到这个程序时,我发现了一个奇怪的现象,如下图所示。如果EOF
as 输入遵循一系列字符(第一行),则无法正确识别(输出一个小的右箭头,第二行)。但是,如果单独输入(第 4 行),则可以正确识别并终止程序。
我没有在 Linux 上测试这个程序,但是有人能解释一下为什么会这样吗?