Win a copy of Java 9 Modularity: Patterns and Practices for Developing Maintainable Applications this week in the Java 9 forum!
programming forums Java Java JSRs Mobile Certification Databases Caching Books Engineering OS Languages Paradigms IDEs Build Tools Frameworks Products This Site Careers Other all forums
this forum made possible by our volunteer staff, including ...
Marshals:
Sheriffs:
Saloon Keepers:
Bartenders:

XOR Question

Mauro Mazzucco
Ranch Hand
Posts: 32

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
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.

Mauro Mazzucco
Ranch Hand
Posts: 32
[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
Posts: 9
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....