This week's book giveaway is in the Kotlin forum.We're giving away four copies of Kotlin in Action and have Dmitry Jemerov & Svetlana Isakova on-line!See this thread for details.
Win a copy of Kotlin in Action this week in the Kotlin forum!
programming forums Java Java JSRs Mobile Certification Databases Caching Books Engineering Languages Frameworks Products This Site Careers Other all forums
this forum made possible by our volunteer staff, including ...
Marshals:
Sheriffs:
Saloon Keepers:
Bartenders:

# Operators and assignments

shatabdi
Greenhorn
Posts: 6
This is a program I saw in Jarowski's book
class Sub
{
public static void main(String ards[])
{
int x = 0;
boolean b1, b2, b3, b4;
b1 = b2 = b3 = b4 = true;

x = ( b1 | b2 & b3 ^ b4) ? x++ : --x;
System.out.print(x);
}
}
The o/p is 0(zero). Can anybody pls explain me why ?

Anonymous
Ranch Hand
Posts: 18944
x = (b1|b2&b3^4) ? x++ : --x;
The expression can be solved in the following manner:
Using the following operator preceence:
1> & AND
2> ^ XOR
3> | OR
x = (true | ( true & true ) ^ true) ----- 1
x = (true | (true ^ true ) ) -------------2
x = (true | false) -----------------------3
x = true
x evaluates to true so the answer is 0.
Please correct if I am wrong!
Regards,
Milind

shatabdi
Greenhorn
Posts: 6
Hi Milind,
The expression x = (b1|b2&b3^b4) ? x++ : --x; means
if(b1|b2&b3^b4)
x = x++;
else
x = --x;
System.out.print(x)
Now the boolean codn (b1|b2&b3^b4) returns true. So x = x++ should execute. My question is then x should be 1 instead of zero(because of x++)in the o/p. I just don't know why it is showing zero !
shatabdi

maha anna
Ranch Hand
Posts: 1467
See this line CAREFULLY.
x=x++; //x = 0[1] which means the LHS is assigned a value 0 which is happened to be x itself. x is incremented and then again assigned to the pre-increment value.

shatabdi
Greenhorn
Posts: 6
Thanks Maha Anna.