| Author |
Operator evaluation order
|
Alexan Kahkejian
Ranch Hand
Joined: Apr 30, 2003
Posts: 74
|
|
Hi all Can someone explain the order of evaluation and how y holds the value 0. Thanx in advance Alexan
|
Alexan Kahkejian<br />SCJP<br />SCWCD<br /><a href="http://www.javaemployer.com" target="_blank" rel="nofollow">http://www.javaemployer.com</a>
|
 |
Saravanakumar Rajmohan
Greenhorn
Joined: Jul 08, 2003
Posts: 17
|
|
x = -1 y= x++ + ++x operands are always evaluated from left to right before an operation is performed all the operands are evaluated except in conditional operators such as (&& , || and in some cases of ? then the operation is performed based on precedence ans associativity. before addition could be performed both the operand has to be evaluated Left operand x++ is evaluated . since it is postfix expression the vlaue of the expression is the value of x before the increment is performed. so the expression will get the value -1(which is the value of x before increment) but x will be incremented by one so x will be -1+1=0. Right operand ++x is evaluated . since it is prefixx expression the value of the expression is the value of x after the increment is performed. so the expression will get the incremented value of x that is 1. Left expression + Right expression -1 + 1 = 0 so y=0 x =1 hope this helps Saravanakumar R
|
 |
Emad Salahuddin
Greenhorn
Joined: Dec 10, 2002
Posts: 6
|
|
Hello Alexan: First the postfix and prefix operators are evaluated and the added together as they have higher precedence over addition. So coming back to your question: int x = -1; y = x++ + ++x; This would be evaluated as: y = -1 + 1 y = 0 The postfix operator (x++) gets the value -1 first and then x is incremented by 1 to give 0. The prefix operator (++x) adds 1 to x first, then uses the new value of x as the value of the expresiion. Hope this helps. Emad
|
 |
 |
|
|
subject: Operator evaluation order
|
|
|