This week's book giveaways are in the Refactoring and Agile forums.We're giving away four copies each of Re-engineering Legacy Software and Docker in Action and have the authors on-line!See this thread and this one for details.
Win a copy of Re-engineering Legacy Software this week in the Refactoring forum
or Docker in Action in the Cloud/Virtualization forum!

# Operator evaluation order

Alexan Kahkejian
Ranch Hand
Posts: 74
Hi all

Can someone explain the order of evaluation and how y holds the value 0.
Alexan

Saravanakumar Rajmohan
Greenhorn
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

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