在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/

10-11 15:09