what will be the correct output and explain why?


int main(void)


int a = 1;

int b = 0;

int c = a || --b;

int d = a-- && --b;

printf(“a=%d, b=%d, c=%d, d=%d\n”,a,b,c,d);

return 0;


so a=0,b=-1,c=1,d=1.
okay so c=a||–b, in this since it an or operator so we know thatif any of the value is true then it will be true, since the value of a is now 1 which means true so it will not go into --b and it will stop after operating ‘a’ only, so ‘c’ becomes 1.

Now for d=a-- whose value is 1 for now and now we get into --b whose value is -1 now since we have pre decremented it, as we know that for all non zero value of && the value is 1, therefore d=1.
now a=0, since we have post decremented in d beforehand.
Hope u got it, sorry if my explanation ain’t that good.