表达式如何评估?

Dug*_*ggs 1 c expression

有人可以为表达式绘制优先级树,请在C中进行表达式求值后解释副作用.值.

int i=-3, j=2, k=0, m;
m= ++i || ++j&&++k;
Run Code Online (Sandbox Code Playgroud)

根据我输出应该是-2 3 1 1但我的gnu c编译器打印是-2 2 0 1?我想知道怎么样?

Mar*_*oun 8

因为短路评估j不会评估:

m= ++i || ++j && ++k;
    ?
Run Code Online (Sandbox Code Playgroud)

在这个阶段,m无论右侧是什么,已经评估为1 ||.为什么?

因为1 || anything是1.