This week's book giveaway is in the OO, Patterns, UML and Refactoring forum. We're giving away four copies of Refactoring for Software Design Smells: Managing Technical Debt and have Girish Suryanarayana, Ganesh Samarthyam & Tushar Sharma on-line! See this thread for details.

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!

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