Win a copy of Re-engineering Legacy Software this week in the Refactoring forum
or Docker in Action in the Cloud/Virtualization forum!

# post and pre increment operators

Roshan Rai
Greenhorn
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
Posts: 67
• 1
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

Henry Wong
author
Marshal
Posts: 20893
75
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
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.