Darren Tweedale

Greenhorn

Posts: 16

posted 15 years ago

I having a problem understanding pre and post operators. I can understand the following simple code:

still results 0 because it is increment after it is assigned to i. But take a look at this more complex version:

every way I look at it, i keep getting different answers! How does one work out the results for this kind of question?

To me I would have thought that starting from the left, it would first (++n) to get a three, then n++ still leaves it three because it is added after, then --n to 2, and again --n to get one, finally incrementing the earlier post operator n++ to get a four (because it was 3 at that point). Finally add all the results, 3+4+2+1 = 10, but the answer is 11?

Any help would be gratefully appreciated, especially any rules of how it works.

Also, how does one KNOW when the object is garbaged collected at a certain point?

Thanks!

still results 0 because it is increment after it is assigned to i. But take a look at this more complex version:

every way I look at it, i keep getting different answers! How does one work out the results for this kind of question?

To me I would have thought that starting from the left, it would first (++n) to get a three, then n++ still leaves it three because it is added after, then --n to 2, and again --n to get one, finally incrementing the earlier post operator n++ to get a four (because it was 3 at that point). Finally add all the results, 3+4+2+1 = 10, but the answer is 11?

Any help would be gratefully appreciated, especially any rules of how it works.

Also, how does one KNOW when the object is garbaged collected at a certain point?

Thanks!

Roy Ben Ami

Ranch Hand

Posts: 732

posted 15 years ago

you almost did it right:

++n + n++ + --n + --n;

++n gives u 3 as u said.

then at n++ it is still 3 u are correct so the answer until now is 6.

now: --n. u must remember that n at this point is 4 (bacsue in the last stage u did n++ so it was inceremnted after the addiotion to 6 u did).

so now n is 3 again so the answer is 9.

at last:

--n now n is 2 so the answer is 11.

3+3+3+2=11; !

++n + n++ + --n + --n;

++n gives u 3 as u said.

then at n++ it is still 3 u are correct so the answer until now is 6.

now: --n. u must remember that n at this point is 4 (bacsue in the last stage u did n++ so it was inceremnted after the addiotion to 6 u did).

so now n is 3 again so the answer is 9.

at last:

--n now n is 2 so the answer is 11.

3+3+3+2=11; !

Valentin Crettaz

Gold Digger

Sheriff

Sheriff

Posts: 7610

posted 15 years ago

Check this link out:http://www.javaranch.com/cgi-bin/ubb/ultimatebb.cgi?ubb=get_topic&f=24&t=014606

HIH

HIH

SCJP 5, SCJD, SCBCD, SCWCD, SCDJWS, IBM XML

[Blog] [Blogroll] [My Reviews] My Linked In

Darren Tweedale

Greenhorn

Posts: 16

Brian Lugo

Ranch Hand

Posts: 165

posted 15 years ago

Dareen, I wrote a POST couple of days ago on the post=fix operators:

http://www.javaranch.com/cgi-bin/ubb/ultimatebb.cgi?ubb=get_topic&f=24&t=014701

http://www.javaranch.com/cgi-bin/ubb/ultimatebb.cgi?ubb=get_topic&f=24&t=014701