2013-08-16 38 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

回答