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

Mi interessa perché logica booleana | è usato qui. Perché non usare condizionale cortocircuitato ||?Strana implementazione di Guava LongMath.checkedAdd

+0

Come avresti scritto? –

+0

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

+3

Non così raro nel codice che vuole evitare la ramificazione per motivi di prestazioni. – molbdnilo

risposta