wood burning stoves 2.0*
The moose likes Programmer Certification (SCJP/OCPJP) and the fly likes increment post and pre, when used in println 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 "increment post and pre, when used in println" Watch "increment post and pre, when used in println" New topic
Author

increment post and pre, when used in println

Sekhar Choudary
Ranch Hand

Joined: May 03, 2008
Posts: 57
Hi ,


Can anyone explain lines 1, 2, 3 and 4 and differences.
Thanks.
Ankit Garg
Sheriff

Joined: Aug 03, 2008
Posts: 9313
    
  17

Lets go through the execution step by step


int x=2;
int y=1;

System.out.println(y+++x);
This will be interpreted as ((y++)+x) This is because the compiler will parse the expression from left to right. postfix ++ operator is left associative so first two + out of +++ will be associated with y. the one + left will be a binary operator between y++ and x.
But the output will be 3 as it will be interpreted as 1+2. This is because the value of y will be 1 in this expression. After using the value of y in the expression y will be incremented.

Now x = 2 and y = 2
System.out.println(y+ ++x);
This one is simple. It will work as 2+3. Here the value of x will be first incremented and then used in the expression.

Now x = 3 and y = 2
System.out.println(++x);
This one is again easy. The value of x will be incremented from 3 to 4 and then displayed.

Now x = 4 and y = 2
System.out.println(x++);
In this one the value of x will be used in the expression and then incremented. So 4 will be displayed and then the value of x will become 5.

I think you have confusion between pre and postfix increment operators. Consult some book for this or google it...


SCJP 6 | SCWCD 5 | Javaranch SCJP FAQ | SCWCD Links
Mario Razec
Greenhorn

Joined: Aug 01, 2008
Posts: 17
Hi SekBar prefix and postfix is strange =)
Ankit excellent explanation...

Remember: The book (K&B)pg:289: "The operator is placed either before (prefix) or after (postfix) a variable to change its value."

I advise the Debug Code for greater understanding.
Look: http://www.janeg.ca/scjp/oper/prefix.html
Sekhar Choudary
Ranch Hand

Joined: May 03, 2008
Posts: 57
Thank you guys.
Sekhar.
 
jQuery in Action, 2nd edition
 
subject: increment post and pre, when used in println