赋值和不等于优先级

Afs*_*ani 0 c

在The C Programming Language,第2版的第17页中,作者说

该优先级的!=比的高=

因此,当我想测试它时,它不是那样的.这是我的简单程序:

#include <stdio.h>

int main() {
    int inp;

    while(inp = getchar() != EOF) {
        putchar(inp);
    }
}
Run Code Online (Sandbox Code Playgroud)

我尝试读取输入并将其显示给用户.当我尝试这一点时,没有任何事情发生,屏幕是空的,但是当我尝试这个时,一切正常:

#include <stdio.h>

int main() {
    int inp;

    while((inp = getchar()) != EOF) {
        putchar(inp);
    }

}
Run Code Online (Sandbox Code Playgroud)

怎么了?我有gcc version 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2336.11.00).

Joa*_*son 11

发生了什么正是你所说的The precedence of != is higher than that of =.

这意味着比和!= 更难结合=

while(inp = getchar() != EOF) {
Run Code Online (Sandbox Code Playgroud)

相当于;

while(inp = (getchar() != EOF)) {
Run Code Online (Sandbox Code Playgroud)

这将设置inp为比较的bool值,而不是您要查找的字符值.