File APIs for Java Developers Manipulate DOC, XLS, PPT, PDF and many others from your application. http://aspose.com/file-tools
Big Moose Saloon
 Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies Register / Login

# post and pre increment opeartor

Heba Mahmoud
Ranch Hand

Joined: Apr 26, 2009
Posts: 62

this output 5 as after ++y ,y become 2 then add to it y++ where y =2 in that case then 2+2 =4 then increment y to be 3 then add the left hand side operands of y to have y=y+4= 3+4= 7
??? that what i understand but i don't know how 5 is the output ??

also try to test the same code changing y to int y=0; and see the result that =2

SCJP Pass 85%....
Thousands of candles can be lighted from a single candle, and the life of the candle will not be shortened
Ranch Hand

Joined: Aug 08, 2009
Posts: 72
Heba Mahmoud wrote:

this output 5 as after ++y ,y become 2 then add to it y++ where y =2 in that case then 2+2 =4 then increment y to be 3 then add the left hand side operands of y to have y=y+4= 3+4= 7

First of all try to simplyfy the expression.
Actual expression is

y= y+ ++y + y++;

Here y=1. And when you say y+ that is 1+
then it comes to ++y here y becomes 2

expression is y= 1 + 2 + y++ ok?

then it becomes like this y=1 + 2 + 2 (And not 3 Because it is post increment operator so it first uses current value then
increment it.)

Thats why... finally y= 1 + 2 + 2 i.e. 5

In case of 0.... I think you can follow the above steps.
You'll get the answer as 2.

Abimaran Kugathasan
Ranch Hand

Joined: Nov 04, 2009
Posts: 2066

Correct!

|BSc in Electronic Eng| |SCJP 6.0 91%| |SCWCD 5 92%|
Heba Mahmoud
Ranch Hand

Joined: Apr 26, 2009
Posts: 62
why you evalute the expression as

and didn't evalute it as the rule saying evalute the right operand first then the left operand

i understand what you do but i don't understand why not you evalute it as i made ??
Abimaran Kugathasan
Ranch Hand

Joined: Nov 04, 2009
Posts: 2066

Heba Mahmoud wrote:why you evalute the expression as

and didn't evalute it as the rule saying evalute the right operand first then the left operand

i understand what you do but i don't understand why not you evalute it as i made ??

There is a order.

In Java the Order of Evaluation is from left to right...
Abimaran Kugathasan
Ranch Hand

Joined: Nov 04, 2009
Posts: 2066

There are 3 things related to Operators in Java

1) Precedence Order: When two operators share an operand, the operator with higher precedence goes first.. I think, you know that!
2) Associativity : When two operators with the same precedence the expression is evaluated according to its associativity.
For Ex :

is treated as

Since = operator has right to left associativity.

3) Order of evaluation : In Java, the left operand is always evaluated before the right operand. also it applies to function arguments.

For Ex :

Hope you understand this!
Seetharaman Venkatasamy
Ranch Hand

Joined: Jan 28, 2008
Posts: 5575

Heba Mahmoud wrote:

is nothing but y = y + (++y + y++);

Always use decompiler for this kind of code .

decompiled code is below:

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

subject: post and pre increment opeartor