Я хочу розглянути особливий випадок, коли множення двох чисел разом викликає переповнення. Код виглядає приблизно так:
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
завжди є негативними для мого сценарію.