请解释一下这个的输出

时间:2015-01-29 16:25:43

标签: c operators logical-operators

我正在尝试编程,我写了一个小代码,但我无法理解这个

#include<stdio.h>
int main()
{

    int x,y,z,k;
    x=y=z=k=1;

    z=x++||y++&&k++;
    printf("%d %d %d %d\n",x,y,z,k);
}

我期待输出为2 1 1 2 因为&amp;&amp;的优先权超过|| 但输出是2 1 1 1 请解释一下。

1 个答案:

答案 0 :(得分:5)

C使用short-circuit evaluation,因此当x++被评估为true时,其余的表达式不会被评估,也不会发生增量。