Quero lidar com o caso especial em que a multiplicação de dois números causa um estouro. O código é parecido com este:
int a = 20;
long b = 30;
// if a or b are big enough, this result will silently overflow
long c = a * b;
Essa é uma versão simplificada. No programa real a
e b
são obtidos em outro lugar em tempo de execução. O que eu quero alcançar é algo assim:
long c;
if (a * b will overflow) {
c = Long.MAX_VALUE;
} else {
c = a * b;
}
Como você sugere que eu codifique melhor isso?
Update: a
e b
são sempre não negativos no meu cenário.