René Nyffenegger's collection of things on the web
René Nyffenegger on Oracle - Most wanted - Feedback -
 

Precedence of the modulus (reminder) and the ++ (incrementing) operator in Java and C++

I do C++ programming a lot and occasionally, I do Java. One of the idioms that I used often (at least in C++) is
a=(a++)%7;
Assuming that a is greater than or equal to 0, then this idiom increments the value of a by one. If a's value reaches 7, it is set to 0 again, making sure that a is always between 0 and 6 (inclusively).
That is, in C++. In Java, this idiom does not change the value of a at all (still assuming the value of a being between 0 and 6 (inclusively).
I just lost an hour finding a 'bug' because this idiom is treated differently in Java than in C++. Oh yeah, don't assume anything.

Update

Frederic Barachant comments on this article.