It's not a secret anymore!
The moose likes Programmer Certification (SCJP/OCPJP) and the fly likes Operator assignment freaks me out? 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 assignment freaks me out?" Watch "Operator assignment freaks me out?" New topic

Operator assignment freaks me out?

Karthik Gurunathan

Joined: Jan 26, 2004
Posts: 19
What will the following class print ?
class InitTest
public static void main(String[] args)
int a = 1;
int b = 1;
a = a++;
b = b++ + b;
System.out.println(a+ " "+b);

How come the answer is 1,3 for the above code? I am not able to get my head around this stuff...please somebody explain. I thought it 2,3.
Nathaniel Stoddard
Ranch Hand

Joined: May 29, 2003
Posts: 1258
To compute a, the compiler first sees what a is (1), then does the post-increment (now a = 1), then finally set a to what it saw the first time (which was 1). So, a will be 1 once the "=" is done.
To compute b, you must remember that operands are computed left to right. So, the first operand will be 1, then b is incremented so be = 2. Then the second operand is retrieve (which is b, now 2). Then the "+" is done, using 2 and 1. So, be = 3.
Does that make sense?

Davy Kelly
Ranch Hand

Joined: Jan 12, 2004
Posts: 384
hey Karthik,
this is a great thread to read on the post increment operator.
post increment operator
but in quick terms.
int a = 1;
int b = 1;
a = a++; //a=a; then add 1 to a, so a=1; the last post increment did happen but did not get assigned to anything
b = b++ + b; //b=b++ + b; b=1 + 2 b=3 same here because it increments after it has done the last thing.
System.out.println(a+ " "+b);
[ April 19, 2004: Message edited by: Davy Kelly ]

How simple does it have to be???
Lionel Orellana
Ranch Hand

Joined: Mar 19, 2004
Posts: 87
Just remember x++ adds one to x but it actually returns x. ++x adds one to x and returns x + 1.
Bert Bates

Joined: Oct 14, 2002
Posts: 8898
Three guesses what my comment is?

Spot false dilemmas now, ask me how!
(If you're not on the edge, you're taking up too much room.)
It is sorta covered in the JavaRanch Style Guide.
subject: Operator assignment freaks me out?
It's not a secret anymore!