【发布时间】:2020-08-27 20:36:17
【问题描述】:
当我运行下面的程序时,输出第二个 1。我调试程序,但我不明白为什么编译器总是写第二个 1?
#include <stdio.h>
main()
{
int c;
while (c = getchar() != EOF)
printf("%d\n", c);
printf("%d - at EOF\n", c);
}
【问题讨论】:
-
由于operator precedence,表达式
c = getchar() != EOF实际上等于c = (getchar() != EOF)。也就是说,您将getchar() != EOF的布尔值(0或1)结果分配给c。这是故意的吗? -
因为当您按 Enter 时,您的代码会读取另一个字符。尝试输入类似 'abc
' -
感谢您的回答,您是对的@Oo.oO。我错过了 Enter。
-
即使代码做了正确的事情,我建议您通过在条件周围显式使用括号来强调它。还请在问题本身中添加该程序试图解决的实际问题(因为准确理解您的问题至关重要)。问题应尽可能独立。
-
您可能还想花一些时间阅读the help pages,阅读SO tour,阅读How to Ask,以及this question checklist。应该让你为下一个问题做好更好的准备。 :)