想这while
循环:编译器如何处理`(c = getchar())!= EOF`?
while ((c = getchar()) != EOF)
^^^^^^^^^^^^^
assignment
正如你可以看到,我们要分配比较EOF
,怎么可能发生?据我知道,所以你不能比较的分配任务不返回任何值(是吗?)
想这while
循环:编译器如何处理`(c = getchar())!= EOF`?
while ((c = getchar()) != EOF)
^^^^^^^^^^^^^
assignment
正如你可以看到,我们要分配比较EOF
,怎么可能发生?据我知道,所以你不能比较的分配任务不返回任何值(是吗?)
赋值表达式返回分配的值,在你是比较的的while ((c = getchar()) != EOF)
情况来自标准输入(什么getchar()
返回 - 这是分配值)的下一个字符与EOF
。
无论何时调用getchar(),它都会读取输入的下一个字符并将其返回给您。该函数返回一个int,它是相关字符的ASCII码,但如果需要,您可以将结果分配给char变量。 所以通过这种方式,变量c正在获取与EOF进行比较的值。该循环将一直运行,直到文件达到最终。
赋值通常会返回值:您可以将它用于“a = b = c = 0;”或者在您的示例中的条件中... – 2013-05-07 10:04:16
它是一种表达式,而不仅仅是C语言中的赋值。 – BLUEPIXY 2013-05-07 10:05:41
您需要习惯(子)表达式的**值**和**副作用**的概念。无论用户输入什么,'c = getchar()'的**值**基本上都是。 **副作用**正在改变'c'的值。 – pmg 2013-05-07 10:08:37