Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

Why do the values of x and y not decrement in this code?

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.

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

>Solution :

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.

Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading