sri.vatsa - 2 months ago 5x
C Question

# Assignment operators in if statement

``````int a = 0, b = 0, c = -1;

if (b = a || b == ++c )
a+=3;
``````

Why are the values of a,b and c 3 , 1, 0 respectively? More specifically, why is b 1 and not 0?

Once you are clear with the precedence of operators,it will be easy for you to tackle such type of questions.Go through this to know about operator precedence in C.

You should see my answer after going through the precedence list because then it will get more easily inside your mind.

Out of all the operators used in the above code, `++c` has the highest precedence.So the value of `c` becomes `0` and then value of `c` is compared to value of `b` here `b == ++c` which evaluates to `true` i.e `1` and now `||` of `1` and `a` is taken which is `1`.

And finally this result `1` is assigned to `b`.So the overall execution of `if` statement evaluates to true and value of `a` is incremented by `3`.

Hence finally the value of `a=3,b=1 and c=0`.

Source (Stackoverflow)