Big Moose Saloon
 Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies Register / Login

# Short-Circuit Logical Operators

sonali sawant
Greenhorn

Joined: Oct 24, 2005
Posts: 13
public class Test
{
public static void main(String [] args)
{
int x= 0;
int y= 10;
for (int z = 0; z < 5; z++)
{
if (( y-- > 7 ) || (++x > 2))
{
y--;
}
}
System.out.println(y + " " + x);
}
}

Answer is 2 3

Can anyone explain output of this questions.It is from K&B Master Exam-1
wise owen
Ranch Hand

Joined: Feb 02, 2006
Posts: 2023
for (int z = 0; z < 5; z++)
{
if (( y-- > 7 ) || (++x > 2))
{
y--;
}
}

z=0:
(y-- > 7) is true and do y--; //x =0 y =8
z=1:
(y-- > 7) is true and do y--; //x =0 y =6
z=2:
(y-- > 7) is false and continue to evalute (++x > 2) which is false //x=1 y=5
z=3:
(y-- > 7) is false and continue to evalute (++x > 2) which is false //x=2 y=4
z=4:
(y-- > 7) is false and (++x > 2) is true then doing y--; //x=3 y=2
sonali sawant
Greenhorn

Joined: Oct 24, 2005
Posts: 13
Thanks.Now i understood it.Thanks again.

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

subject: Short-Circuit Logical Operators