我正在阅读K&RC语言书,代码片段如下:
char c;
while ((c = getchar()) != EOF) ...
Run Code Online (Sandbox Code Playgroud)
有人提到,对于EOF(我认为它是-1)是来自getchar的"带外"返回值,与getchar可以返回的所有可能值不同.
我的问题如下:
signed char可以存储-127到+127所以它可以检查-1它是如何"带外"的? char c而不是上面的程序片段会失败int c吗?谢谢!
你有一个小错误,getchar返回一个int,而不是char:
int c;
while ((c = getchar()) != EOF) ...
Run Code Online (Sandbox Code Playgroud)
ascii字符的有效值为0到127,EOF是其他(int)值.
如果你继续使用char,你可能会遇到麻烦(因为我进入)