+ 1

what will be the value of z and how pls help !!!!

int x=1, y=0, z=5; int a = x && y || z++ ; printf("%d",z);

3rd Jun 2020, 5:20 PM
NIK
NIK - avatar
4 Answers
+ 2
oh now i get it you were a great help thanks
3rd Jun 2020, 5:44 PM
NIK
NIK - avatar
+ 1
x && y is executed first because && has higher precedence than ||. 1 && 0 -> false or 0 0 || z -> true or 1 since z is not 0. Since z was 5 and is incremented. The output when printing will be 6. Put y=1 and you can see the z++ is never reached and you will get 5 as output.
3rd Jun 2020, 5:26 PM
Avinesh
Avinesh - avatar
+ 1
thanks
3rd Jun 2020, 5:43 PM
NIK
NIK - avatar
0
Because for an && expression to be true, both the conditions on the either side of the && operator has to be true. If the one on left is false then it will not even check the one on the right. Do you get it? Because it is obvious that it will return false. So since 1 && 0 is false. Then false && z++ is also false so z++ is again not executed. But in || operator any one condition in either side has to be true. So if the one on left is true then it will not check the right one. Just like I mentioned previously.
3rd Jun 2020, 5:43 PM
Avinesh
Avinesh - avatar