printf应该打印出"长"值吗?

MNY*_*MNY 2 c

可能重复:
为什么getchar()不能在Windows控制台中将返回标识为EOF?

我正在尝试在下一个程序中打印变量'nc'中的值:

int main()

{ 
 long nc;
 nc = 0;

 while (getchar() != EOF)
 ++nc;
 printf("%ld\n", nc); 
}
Run Code Online (Sandbox Code Playgroud)

请告诉我为什么不打印?

Ini*_*eer 5

你的while循环中没有括号(这就是为什么不使用括号导致容易出错的软件).因此,值会增加,但不会打印.

尝试:

int main(int argc, char** argv)
{ 
    long nc;
    nc = 0;

    while (getchar() != EOF)
    { // ADD THIS
        ++nc;
        printf("%ld\n", nc); 
    } // AND THIS
}
Run Code Online (Sandbox Code Playgroud)

否则,您的代码基本上是这样做的:

int main(int argc, char** argv)
{ 
    long nc;
    nc = 0;

    while (getchar() != EOF)
    {
        ++nc; // ENDLESSLY ADDING
    }
    printf("%ld\n", nc); // NEVER REACHED DUE TO WHILE LOOP.
}
Run Code Online (Sandbox Code Playgroud)