int i = 0;
boolean b = true;
System.out.println(b && !(i++ > 0))
When I compile the above code I get a value true back.
But how can that be, since the second part of the argument (since b is true already) basically translates to
(0 + 1 > 0) => (1 > 0)
which should return true
. Then the statement would be true && false
, which is false
.
What am I missing?
Java behaving correctly :)
i++
That is postfix increment.
It generated result and then incremented that value later.
!(i++ > 0) // now value is still zero
i++
will use the previous value
of i
and then it will increment
it.
When you use ++ ,it's like
temp=i;
i += 1;
i=temp; // here old value of i.
language specification on Postfix Increment Operator ++
the value 1 is added to the value of the variable and the sum is stored back into the variable. ......
The value of the postfix increment expression is the value of the variable before the new value is stored.
Possible solution would be ++i
, which is as per your requirment,
Prefix Increment Operator ++
The value of the prefix increment expression is the value of the variable after the new value is stored.
You want to use ++i
if you want to increment i and return the incremented value. i++
returns the non incremented value.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With