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!

# post and pre increment operators

Roshan Rai
Greenhorn

Joined: Aug 16, 2012
Posts: 15
i got a doubt in the following code

int z = 5;
if(++z > 5 || ++z > 6) z++; // z = 7 after this code

how does the output comes out to be z=7
in the if condition z becomes 6
but as z++ is post increment it should print(return) 6 and get incremented to 7..
so the output should be 6...??
Abhilash Sharma
Ranch Hand

Joined: Dec 05, 2010
Posts: 67

As you see || is a short circuit operator.
So it first it test first condition and if it found it true it didn't execute next one which is the case here.
In ++z>5 ,z first incremented and then compared so it becomes
6>5 which is true and the controls comes to z++ which increment z to 7 and return it.
If you print z like this System.out.print(z) //z=7
If you print z like this System.out.print(z++) //z=6

OCPJP 6 | OCEJWCD 6
Henry Wong
author
Sheriff

Joined: Sep 28, 2004
Posts: 20037

44

Roshan Rai wrote:i got a doubt in the following code

int z = 5;
if(++z > 5 || ++z > 6) z++; // z = 7 after this code

how does the output comes out to be z=7
in the if condition z becomes 6
but as z++ is post increment it should print(return) 6 and get incremented to 7..
so the output should be 6...??

Where in the code is this print() that you are referring to?

Henry

ujjawal rohra
Ranch Hand

Joined: Mar 20, 2010
Posts: 105
Roshan,

if after the following code you use the value of z then it will be definitely 7 because after Line 1 z is incremented to 7.

But if you place return statement at Line 1 like this:

then the value of z returned will be 6 because the post increment operator will increment it after using it in the return statement.

Hope that helps.

SCJP 6

I’ve looked at a lot of different solutions, and in my humble opinion Aspose is the way to go. Here’s the link: http://aspose.com

subject: post and pre increment operators