This week's book giveaway is in the OO, Patterns, UML and Refactoring forum.We're giving away four copies of Refactoring for Software Design Smells: Managing Technical Debt and have Girish Suryanarayana, Ganesh Samarthyam & Tushar Sharma on-line!See this thread for details.
Big Moose Saloon
 Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies Register / Login Win a copy of Refactoring for Software Design Smells: Managing Technical Debt this week in the OO, Patterns, UML and Refactoring forum!

# Operators and assignments

shatabdi
Greenhorn

Joined: Feb 11, 2000
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 ?

Shatabdi Choudhury<BR>shatabdi@bigfoot.com
Anonymous
Ranch Hand

Joined: Nov 22, 2008
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

Joined: Feb 11, 2000
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

Joined: Jan 31, 2000
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

Joined: Feb 11, 2000
Posts: 6
Thanks Maha Anna.

I agree. Here's the link: http://aspose.com/file-tools

subject: Operators and assignments