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; 
} 

Ich bin interessiert, warum Boolean logisch | wird hier verwendet. Warum nicht bedingte Kurzschlüsse verwenden ||?Seltsame Implementierung von Guava LongMath.checkedAdd

+0

Wie würden Sie es geschrieben haben? –

+0

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

+3

Nicht ungewöhnlich in Code, der aus Leistungsgründen Verzweigung vermeiden möchte. – molbdnilo

Antwort