5
public static long checkedAdd(long a, long b) {
long result = a + b;
checkNoOverflow((a^b) < 0 | (a^result) >= 0);
return result;
}
Tôi quan tâm đến lý do lôgic logic | được sử dụng ở đây. Tại sao không sử dụng mạch có điều kiện ngắn ||?Triển khai lạ Guava LongMath.checkedAdd
Làm thế nào bạn đã viết nó? –
checkNoOverflow ((a^b) <0 || (a^result)> = 0); – ZhekaKozlov
Không phải là không phổ biến trong mã mà muốn tránh phân nhánh vì lý do hiệu suất. – molbdnilo