public static long checkedAdd(long a, long b) {
long result = a + b;
checkNoOverflow((a ^ b) < 0 | (a ^ result) >= 0);
return result;
}
boolean logical | の理由に興味があります。ここで使用されます。条件付き短絡 || を使用しないのはなぜですか?
public static long checkedAdd(long a, long b) {
long result = a + b;
checkNoOverflow((a ^ b) < 0 | (a ^ result) >= 0);
return result;
}
boolean logical | の理由に興味があります。ここで使用されます。条件付き短絡 || を使用しないのはなぜですか?
そのクラスの最初のコメント:
// NOTE: Whenever both tests are cheap and functional, it's faster to use
// &, | instead of &&, ||
詳細なコンテキスト: https://stackoverflow.com/a/11412121/869736