File APIs for Java Developers
Manipulate DOC, XLS, PPT, PDF and many others from your application.
The moose likes Programmer Certification (SCJP/OCPJP) and the fly likes Operator evaluation order Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Certification » Programmer Certification (SCJP/OCPJP)
Bookmark "Operator evaluation order" Watch "Operator evaluation order" New topic

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 Kahkejian<br />SCJP<br />SCWCD<br /><a href="" target="_blank" rel="nofollow"></a>
Saravanakumar Rajmohan

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

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.
I agree. Here's the link:
subject: Operator evaluation order
It's not a secret anymore!