请解释一下这个的输出

hel*_*123 0 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);
}
Run Code Online (Sandbox Code Playgroud)

我期待输出为2 1 1 2,因为&&的优先级大于|| 但输出是2 1 1 1请解释.

Moo*_*oys 5

C使用短路评估,因此当x++评估为时true,不评估剩余的表达式,并且不会发生增量.