Как получить пакет последовательно, используя протокол UDP?

Вычитание «трюк» для сравнения двух числовых значений ломается !!!

        int a = -2000000000;
        int b =  2000000000;
        System.out.println(a - b);
        // prints "294967296"

Здесь a < b, но a - b положителен.

DO NOT используйте эту идиому. Это не работает.

Кроме того, , даже если он работает , он NOT обеспечит существенное улучшение производительности и может фактически стоить читабельность.

См. также

  • Java Puzzlers Головоломка 65: Странная сага о подозрительной сортировке Эта головоломка имеет несколько уроков. Наиболее конкретным является: Не используйте компаратор на основе вычитания, если вы не уверены, что разница между значениями никогда не будет больше Integer.MAX_VALUE. В более общем плане, остерегайтесь переполнения int. Еще один урок состоит в том, что вам следует избегать «умного» кода. Стремитесь писать четкий, правильный код и не оптимизировать его, если это не доказывает необходимость.

0
задан Dany 17 January 2012 в 09:57
поделиться