递增递减的按位运算符

时间:2017-02-12 12:27:41

标签: bit-manipulation bitwise-operators

这个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。

1 个答案:

答案 0 :(得分:2)

a使用b推断++a, ++b以及++a && ++b会发生什么。 d的结果是真的(等于1),这正是true || ++c得到的结果。

因为它显示true,所以它没有检查右手,因为结果显然是O(log log N),这就是c equlas 0的原因。