我想处理两个数字相乘导致溢出的特殊情况。代码大致如下:
int a = 20;
long b = 30;
// if a or b are big enough, this result will silently overflow
long c = a * b;
那是一个简化版本。在真实的程序中,a
和 b
在运行时会从其他地方获取。我想要实现的是像这样的东西:
long c;
if (a * b will overflow) {
c = Long.MAX_VALUE;
} else {
c = a * b;
}
你认为我应该如何最好地编写代码?
更新:在我的情况下,a
和b
始终是非负的。