这个C代码的输出是什么?
#include <stdio.h>
void main()
{
int a = 5, b = -7, c = 0, d;
d = ++a && ++b || ++c;
printf("\n%d%d%d%d", a, b, c, d);
}
答案是6 -6 0 1。 我不明白逻辑AND的优先级如何超过OR。
答案 0 :(得分:2)
a
使用b
推断++a, ++b
以及++a && ++b
会发生什么。
d
的结果是真的(等于1),这正是true || ++c
得到的结果。
因为它显示true
,所以它没有检查右手,因为结果显然是O(log log N)
,这就是c equlas 0的原因。