请解释这个的输出

please explain the output of this

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

#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 因为 && 的优先级高于 || 但输出是 2 1 1 1 请解释。

C使用short-circuit evaluation,所以当x++求值为true时,其余表达式不求值,不产生自增。