This week's book giveaway is in the Java 8 forum. We're giving away four copies of Java 8 in Action and have Raoul-Gabriel Urma, Mario Fusco, and Alan Mycroft on-line! See this thread for details.

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

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.

[quote=Howard Troxler ((++x + 2) > 3) increments x to 2, and 2 + 2 > 3.

why inst the +2 being add to x?

Howard Troxler
Greenhorn

Joined: Jun 05, 2013
Posts: 9

posted

0

It's just an expression, not an assignment, isn't it?

In the expression (++x + 2), the only thing happening to x is that it is being incremented by 1. The expression itself evaluates to whatever the resulting value of x is, plus 2, but the 2 is not being added to x....