main()
{
int i=-3, j=2, k=0, m;
m = ++i || ++j && ++k;
printf("%d %d %d %d", i, j, k, m);
}
Whats the output?
The output shows j==2 and k==0, implying that ++i
was evaluated (and caused the ||
operator to short-circuit its right hand side) before the expression ++j && ++k
which appears to contradict the fact that the &&
operator has higher precedence than ||
.
Would someone explain why?