But <a href="http://java.sun.com/docs/books/jls/second_edition/html/typesValues.doc.html#29775" rel="nofollow">http://java.sun.com/docs/books/jls/second_edition/html/types...</a> says<p>&#62; The built-in integer operators do not indicate overflow or underflow in any way. The only numeric operators that can throw an exception are the integer divide operator / and the integer remainder operator %, which throw an ArithmeticException if the right-hand operand is zero.<p>Maybe it's true that subexpressions can't be reordered for other reasons, but offhand I can't find that restriction.