Ich möchte den Sonderfall behandeln, bei dem das Multiplizieren zweier Zahlen einen Überlauf verursacht. Der Code sieht ungefähr so aus:
int a = 20;
long b = 30;
// if a or b are big enough, this result will silently overflow
long c = a * b;
Das ist eine vereinfachte Version. Im realen Programm a
und b
werden zur Laufzeit an anderer Stelle bezogen. Was ich erreichen möchte, ist ungefähr so:
long c;
if (a * b will overflow) {
c = Long.MAX_VALUE;
} else {
c = a * b;
}
Wie schlagen Sie vor, dass ich dies am besten codiere?
Update: a
und b
sind in meinem Szenario immer nicht negativ.