# Operators and assignments

shatabdi

Greenhorn

Posts: 6

posted 16 years ago

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 ?

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

Posts: 18944

posted 16 years ago

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

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

posted 16 years ago

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

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

Shatabdi Choudhury<BR>shatabdi@bigfoot.com

maha anna

Ranch Hand

Posts: 1467