long m = 24 * 60 * 60 * 1000 * 1000;
उपरोक्त कोड अतिप्रवाह बनाता है और सही परिणाम मुद्रित नहीं करता है।गुणा के साथ ओवरफ्लो होता है
long m2 = 24L * 60 * 60 * 1000 * 1000;
long m3 = 24 * 60 * 60 * 1000 * 1000L;
उपरोक्त 2 पंक्तियां सही परिणाम प्रिंट करती हैं।
मेरे सवालों का कर रहे हैं-
- यह संकलक जो मैं का उपयोग करें,
m2
याm3
कोई फर्क पड़ता है? - जावा गुणा कैसे शुरू करता है? बाएं से दाएं या दाएं से बाएं? क्या 24 * 60 पहले या 1000 * 1000 की गणना की जाती है?
ओप्स- लंबा एम 2 = 24 एल * 60 * 60 * 1000 * 1000 * 1000 * 1000; लंबे एम 3 = 24 * 60 * 60 * 1000 * 1000 * 1000 * 1000 एल; एम 2 और एम 3 एक ही परिणाम नहीं देते हैं जब 1000 * 1000 के एक कारक द्वारा अधिक mutiplied कहते हैं। तो ऐसा लगता है गुणा से बाएं से दाएं होता है। – rents
दाएं, 'm2' का उपयोग करें ताकि प्रत्येक मध्यवर्ती गुणा को 'लंबे' तक बढ़ावा दिया जा सके। गुणा बाएं-सहयोगी है, इसलिए यह बाएं से दाएं चला जाता है। – GriffeyDog
गुणात्मक सहयोगी है, इसलिए आदेश कोई फर्क नहीं पड़ता। हालांकि यह मामलों में बाएं से दाएं गणना की जाती है, इससे कोई फर्क नहीं पड़ता कि कॉलिंग विधियां जो संख्या लौटाती हैं। –