मैं उस विशेष मामले को संभालना चाहता हूं जहां दो संख्याओं को एक साथ गुणा करना एक अतिप्रवाह का कारण बनता है। कोड कुछ इस तरह दिखता है:
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
मेरे परिदृश्य में हमेशा गैर-नकारात्मक होते हैं।