order of evaluation of || and && in c

c

Solution

shouldn't this code evaluate --b && ++c first

No Operator precedence doesn't affect evaluation order. It just means that

a++||--b&&++c

is equilvalent to

a++||(--b&&++c)

so it's still `a++` that is evaluated first, and thus short-circuits the statement.

Problem

If the precedence of && is greater than that of ||, shouldn't this code evaluate --b && ++c first, and thus the output should be 1 2 4 11. But here it seems to be short circuited to give 1 2 5 10. Please help! ``` int x; int a=1,b=5,c=10; x=a++||--b&&++c; printf("%d %d %d %d\n",x,a,b,c); return 0; ```

Original source