El "truco" de la resta para comparar dos valores numéricos está roto !!!
int a = -2000000000;
int b = 2000000000;
System.out.println(a - b);
Aquí, a < b
todavía a - b
es positivo.
NO use este modismo. No funciona.
Además, incluso si funciona , NO proporcionará ninguna mejora significativa en el rendimiento y, de hecho, puede costar la legibilidad.
Ver también
- Java Puzzlers Puzzle 65: Una extraña saga de tipo sospechoso
Este rompecabezas tiene varias lecciones. El más específico es: No utilice un comparador basado en restas a menos que esté seguro de que la diferencia entre los valores nunca será mayor que Integer.MAX_VALUE
. De manera más general, tenga cuidado con el int
desbordamiento. Otra lección es que debes evitar el código "inteligente". Esfuércese por escribir código claro y correcto, y no lo optimice a menos que sea necesario.