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什么?
+具有比 更高的优先级>并且 比>具有更高的优先级!=。
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。