while (!EOLorEOFfound) {
int ch == fgetc(stdin);
EOLorEOFfound = ch == '\n' || ch == EOF;
}
注意:EOLorEOFfound
的类型为bool。
StackOverFlow用户向我提供了有关另一个问题的答案。见这里:
How to determine if fgets stopped before all letters were read?
现在,我一直在困惑最后一行代码中的表达式实际上是什么。我怀疑它可能是某种形式的三元运算符?
答案 0 :(得分:7)
EOLorEOFfound = ch == '\n' || ch == EOF;
与
相同EOLorEOFfound = (ch == '\n' || ch == EOF);
即将布尔表达式的结果赋给变量。这里没有魔法。
答案 1 :(得分:4)
||
具有最高优先级,=
排名第二EOLorEOFfound = ch == '\n' || ch == EOF;
最少。所以,
EOLorEOFfound = ( (ch == '\n') || (ch == EOF) );
与
相同ch
所有它的作用是,将EOLorEOFfound
与给定值进行比较,然后在||
中分配结果。
FWIW,请注意,逻辑OR(int
)的结果属于{{1}}类型。