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

我感兴趣为什么布尔logical |在这里使用。为什么不使用条件短路||?奇怪的实施番石榴LongMath.checkedAdd

+0

如何将你写的吗? –

+0

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

+3

在那些想要避免出于性能原因而分支的代码中并不罕见。 – molbdnilo

回答