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