2013-08-16 16 views
5
public static long checkedAdd(long a, long b) { 
    long result = a + b; 
    checkNoOverflow((a^b) < 0 | (a^result) >= 0); 
    return result; 
} 

Jestem zainteresowany logiką boolean | jest tutaj używany. Dlaczego nie używać zwarcia warunkowego ||?Dziwna implementacja Guava LongMath.checkedAdd

+0

Jak byś napisał go? –

+0

checkNoOverflow ((a^b) <0 || (a^result)> = 0); – ZhekaKozlov

+3

Nie jest to rzadkość w kodzie, który chce uniknąć rozgałęzienia ze względu na wydajność. – molbdnilo

Odpowiedz