Strange implementation of Guava LongMath.checkedAdd


public static long checkedAdd(long a, long b) {
    long result = a + b;
    checkNoOverflow((a ^ b) < 0 | (a ^ result) >= 0);
    return result;
}

我很感兴趣为什么在这里使用布尔逻辑 | 。为什么不使用条件短路||?

该类中的第一条评论:

// NOTE: Whenever both tests are cheap and functional, it's faster to use 
// &, | instead of &&, ||

更多背景:https://stackoverflow.com/a/11412121/869736

相关内容

  • 没有找到相关文章

最新更新