Tôi muốn xử lý trường hợp đặc biệt khi nhân hai số với nhau gây ra tràn. Mã trông giống như sau:
int a = 20;
long b = 30;
// if a or b are big enough, this result will silently overflow
long c = a * b;
Đó là một phiên bản đơn giản hóa. Trong chương trình thực a
và b
có nguồn ở nơi khác trong thời gian chạy. Những gì tôi muốn đạt được là một cái gì đó như thế này:
long c;
if (a * b will overflow) {
c = Long.MAX_VALUE;
} else {
c = a * b;
}
Làm thế nào để bạn đề nghị tôi viết mã này tốt nhất?
Cập nhật: a
và b
luôn không tiêu cực trong kịch bản của tôi.