Heba Mahmoud

Ranch Hand

Posts: 62

posted 7 years ago

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

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

Aditya Kanitkar

Ranch Hand

Posts: 72

posted 7 years ago

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.

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.

Heba Mahmoud

Ranch Hand

Posts: 62

posted 7 years ago

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 ??

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 ??

Thousands of candles can be lighted from a single candle, and the life of the candle will not be shortened

posted 7 years ago

There is a order.

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...**

|BSc in Electronic Eng| |SCJP 6.0 91%| |SCWCD 5 92%|

posted 7 years ago

There are 3 things related to Operators in Java

For Ex :

is treated as

Since

For Ex :

Hope you understand this!

**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!

|BSc in Electronic Eng| |SCJP 6.0 91%| |SCWCD 5 92%|