Chcę zająć się specjalnym przypadkiem, w którym pomnożenie dwóch liczb razem powoduje przepełnienie. Kod wygląda mniej więcej tak:
int a = 20;
long b = 30;
// if a or b are big enough, this result will silently overflow
long c = a * b;
To uproszczona wersja. W prawdziwym programie a
i b
są pozyskiwane gdzie indziej w czasie wykonywania. To, co chcę osiągnąć, to coś takiego:
long c;
if (a * b will overflow) {
c = Long.MAX_VALUE;
} else {
c = a * b;
}
Jak sugerujesz, żebym najlepiej to zakodował?
Aktualizacja: a
i b
zawsze są nieujemne w moim scenariuszu.