# XOR Question

posted 3 years ago

Why the value of x is 4 and not 7 ?

The way i see it, in the first if 4 > x is true

then ((++x + 2) > 3 )also returns true and x is now 4

the second if 4 > ++x is false and x is now 5, then (++x == 5) is false but because of the ! is true so the if passes and x is now 6

then x gets incremented again and its now 7

Why the value of x is 4 and not 7 ?

The way i see it, in the first if 4 > x is true

then ((++x + 2) > 3 )also returns true and x is now 4

the second if 4 > ++x is false and x is now 5, then (++x == 5) is false but because of the ! is true so the if passes and x is now 6

then x gets incremented again and its now 7

Howard Troxler

Greenhorn

Posts: 9

posted 3 years ago

Both expressions in both of your exclusive-or statements evaluate to true, so the XOR is false. That means x is incremented only twice.

(4 > x) is true... ((++x + 2) > 3) increments x to 2, and 2 + 2 > 3. Both sides are true, the XOR is not satisfied, so x is not incremented again.

Now we have (4 > ++x), which increments x to 3, and the expression is true...

And the last expression is !(++x == 5). We increment x to 4, and !(4 == 5) is true. So x is incremented no more.

(4 > x) is true... ((++x + 2) > 3) increments x to 2, and 2 + 2 > 3. Both sides are true, the XOR is not satisfied, so x is not incremented again.

Now we have (4 > ++x), which increments x to 3, and the expression is true...

And the last expression is !(++x == 5). We increment x to 4, and !(4 == 5) is true. So x is incremented no more.

Howard Troxler

Greenhorn

Posts: 9