在C编程语言第17页第2版中,作者说!=
的优先级高于=
所以当我想测试的时候,不是那样的。这是我的简单程序:
#include <stdio.h>
int main() {
int inp;
while(inp = getchar() != EOF) {
putchar(inp);
}
}
我试图读取输入并显示给用户。当我尝试的时候,什么都没有发生,屏幕是空的,但是当我尝试的时候,一切都很好:
#include <stdio.h>
int main() {
int inp;
while((inp = getchar()) != EOF) {
putchar(inp);
}
}
怎么了?我有
gcc version 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2336.11.00)
。 最佳答案
发生的事情正是你所说的,The precedence of != is higher than that of =
。
这意味着!=
比=
更难结合,并且
while(inp = getchar() != EOF) {
相当于;
while(inp = (getchar() != EOF)) {
这会将
inp
设置为比较的bool值,而不是您要查找的字符值。关于c - 分配和非相等优先级,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16382136/