I have been trying to figure out why the output of the code below is 2 2 but can't seem to figure out why. I get that the else statement is getting executed but from what I've read I can't understand why the first print doesn't get executed.
#include <stdio.h>
#include <stdlib.h>
int main()
{
int x = 1, y = 1;
if(x++ == y++)
printf("%d%d", x--, y--);
else
printf("%d%d", x,y);
return 0;
}
Originally I expected the output to be 0 0
I have played around with changing the values and the operators and each time the decrement print never executed. From what I can tell from reading on the topic decrementing inside a print should be possible but I'm not sure what is making it not execute.
The if
block is being executed.
In the condition if(x++ == y++)
, the current value of x
is compared with the current value of y
. Both are 1 so the comparison is true, and both x
and y
are incremented as a side effect.
So then this statement runs:
printf("%d%d", x--, y--);
Which prints the current values of x
and y
which are both 2, and both are decremented as a side effect. If you were to print both after this, you would see that both are 1.