मैं इस कोड स्निपेट पर हैरान हूँ:इस गुणा में एक पूर्णांक ओवरफ़्लो क्यों है?
#include <climits>
#include <iostream>
int main(void) {
using namespace std;
cout << "long max " << LONG_MAX << endl;
long x = 2 * 1024 * 1024 * 1024;
cout << "2 * 1024 * 1024 * 1024 = " << x << endl;
return 0;
}
मैं उम्मीद कर रहा था के रूप में यह होना चाहिए, बजाय मैं हो रही है। हस्ताक्षरित का उपयोग करने में मदद नहीं लगती है। क्या देता है?
long max 9223372036854775807
2 * 1024 * 1024 * 1024 = -2147483648
यदि आप '1024' टाइप करते हैं, तो इस भाषा में पूर्णांक होने पर पहले से ही डेटा प्रकार होता है। यही कारण है कि यदि आप लंबे डेटाटाइप चाहते हैं तो आपको '1024L' निर्दिष्ट करना होगा। – eis