在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值,而不是您要查找的字符值.