我found维基百科上的这段代码。
#include <stdio.h>
int main(void)
{
int c;
while (c = getchar(), c != EOF && c != 'x')
{
switch (c)
{
case '\n':
case '\r':
printf ("Newline\n");
break;
default:
printf ("%c",c);
}
}
return 0;
}
我很好奇用作 while 循环条件的表达式:
while (c = getchar(), c != EOF && c != 'x')
它的作用很明显,但我以前从未见过这种结构。这是否特定于 while 循环?如果不是,解析器/编译器如何确定逗号分隔表达式的哪一侧为 while 循环返回 bool 值?
最佳答案
comma operator是一个二元运算符,它计算第一个操作数并丢弃结果,然后计算第二个操作数并返回此值。
它也是一个"sequence point" ,这意味着在执行下一部分代码之前将计算所有副作用。
关于c - 在 while 循环条件中赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1136108/