On 1/10/07, Marshall Schor <[EMAIL PROTECTED]> wrote:
Adam Lally wrote: > I stumbled across this: > > private void incrementIllegalIndexUpdateDetector(int typeCode) { > this.detectIllegalIndexUpdates[typeCode] = > (this.detectIllegalIndexUpdates[typeCode] == Integer.MAX_VALUE) ? > Integer.MIN_VALUE > : this.detectIllegalIndexUpdates[typeCode] + 1; > } > > > I think this is just a really long way of writing: > > this.detectIllegalIndexUpdates[typeCode]++; > > > Because Integer.MAX_VALUE + 1 == Integer.MIN_VALUE > > Any objects to my shortening this while I'm in this code?I wrote that piece, because I guessed (maybe incorrectly) that adding 1 to a max-value would cause an integer-overflow-exception. I looked this up, and according to one source, MAX_VALUE + 1 = -2147483648. (What happens is that any extra bits beyond the 32-nd bit in the correct answer are discarded. Values greater than 2147483647 will "wrap around" to negative values. Mathematically speaking, the result is always "correct modulo 2^32".)
Yup, this is old-fashioned computer arithmetic, none of that fancy exception stuff. :)
If there is no assumption dependency that this value is non-negative, then I think the change is OK.
If there was such an assumption, this code was broken already. I'm not doing anything that will change the behavior of this code in any way, except that it might possibly run a little faster. -Adam
