int main() { int i = -3, j = 2, k = 0, m; m = ++i || ++j && ++k; printf(\"%d %d %d %d\\n\", i, j, k, m); return 0; }
i thought tha
&& does have higher precedence than ||, which means that ++i || ++j && ++k parses as ++i || (++j && ++k).
&&
||
++i || ++j && ++k
++i || (++j && ++k)
However this does not change the fact that the RHS of || only executes if the LHS returns 0.
0
Precedence does not affect order of evaluation.