表达式 c = a>2+b!=6 的输出是什么?

anj*_*air 3 c evaluation operator-precedence

最近我遇到了这个程序。

#include <stdio.h>

int main() {
    int a = 10, b = 20, c;
    c = a > 2 + b != 6;
    printf("%d", c);
}
Run Code Online (Sandbox Code Playgroud)

输出背后的逻辑是1什么?

Rob*_*rtS 7

这取决于运算符优先级

+具有比 更高的优先级>并且 比>具有更高的优先级!=

a > 2 + b != 6
Run Code Online (Sandbox Code Playgroud)

被评估为:

((a > (2 + b)) != 6)
Run Code Online (Sandbox Code Playgroud)

或更具体的:

((10 > (2 + 20)) != 6)
Run Code Online (Sandbox Code Playgroud)

where(10 > (20 + 2))被评估为0,因为10不大于22

所以表达式展开为:

(0 != 6)
Run Code Online (Sandbox Code Playgroud)

其评估为1因为0不等于6-> (0 != 6) == 1