为什么我不能在C中找到EOF的值?

MNY*_*MNY 7 c

我正在阅读"C语言程序设计语言"这本书,并且有一个练习要求验证表达式getchar() != EOF是返回1还是0.现在,我被要求做的原始代码是:

int main()
{
    int c;
    c = getchar();

    while (c != EOF)
    {
        putchar(c);
        c = getchar();
    }  
}
Run Code Online (Sandbox Code Playgroud)

所以我想把它改成:

int main()
{
    int c;
    c = getchar();

    while (c != EOF)
    {
        printf("the value of EOF is: %d", c);
        printf(", and the char you typed was: ");

        putchar(c);
        c = getchar();
    }
}
Run Code Online (Sandbox Code Playgroud)

书中的答案是:

int main()
{
  printf("Press a key\n\n");
  printf("The expression getchar() != EOF evaluates to %d\n", getchar() != EOF);
}
Run Code Online (Sandbox Code Playgroud)

能告诉我为什么我的方式不起作用吗?

Mec*_*cki 5

因为如果cEOF,while循环终止(或者甚至不会启动,如果它已经EOF在键入的第一个字符上).运行循环的另一次迭代的条件cNOT EOF.


jim*_*ara 5

显示EOF的值

#include <stdio.h>
int main()
{
   printf("EOF on my system is %d\n", EOF);
   return 0;
}
Run Code Online (Sandbox Code Playgroud)

EOF在stdio.h中通常定义为-1