खोज…
पूर्णांक अतिप्रवाह
एक अधिकतम क्षमता है जो एक पूर्णांक स्टोर कर सकता है। और जब आप उस सीमा पर जाते हैं, तो यह नकारात्मक पक्ष पर वापस आ जाएगा। के लिए int
, यह है 2147483647
int x = int.MaxValue; //MaxValue is 2147483647
x = unchecked(x + 1); //make operation explicitly unchecked so that the example also works when the check for arithmetic overflow/underflow is enabled in the project settings
Console.WriteLine(x); //Will print -2147483648
Console.WriteLine(int.MinValue); //Same as Min value
इस सीमा से बाहर के किसी भी पूर्णांक के लिए नामस्थान सिस्टम का उपयोग करें। नॉमरिक्स जिसमें डेटाटाइप बिगइंटर है। अधिक जानकारी के लिए नीचे दिए गए लिंक की जाँच करें https://msdn.microsoft.com/en-us/library/system.numerics.biginteger(v=vs.110).aspx
ऑपरेशन के दौरान अतिप्रवाह
ऑपरेशन के दौरान ओवरफ्लो भी होता है। निम्नलिखित उदाहरण में, x एक int
, 1 डिफ़ॉल्ट रूप से एक int
है। इसलिए जोड़ एक int
जोड़ है। और परिणाम एक int
। और यह ओवरफ्लो हो जाएगा।
int x = int.MaxValue; //MaxValue is 2147483647
long y = x + 1; //It will be overflown
Console.WriteLine(y); //Will print -2147483648
Console.WriteLine(int.MinValue); //Same as Min value
आप 1L का उपयोग करके इसे रोक सकते हैं। अब 1 एक long
होगा और इसके अलावा एक long
जोड़ होगा
int x = int.MaxValue; //MaxValue is 2147483647
long y = x + 1L; //It will be OK
Console.WriteLine(y); //Will print 2147483648
मामलों का आदेश देना
निम्नलिखित कोड में अतिप्रवाह है
int x = int.MaxValue;
Console.WriteLine(x + x + 1L); //prints -1
जबकि निम्नलिखित कोड में कोई अतिप्रवाह नहीं है
int x = int.MaxValue;
Console.WriteLine(x + 1L + x); //prints 4294967295
यह ऑपरेशनों के बाएं से दाएं क्रम के कारण है। पहले कोड में x + x
ओवरफ्लो होता है और उसके बाद यह long
हो जाता है। दूसरी ओर x + 1L
long
हो जाता है और उसके बाद x
को इस मान में जोड़ा जाता है।