खोज…


पूर्णांक अतिप्रवाह

एक अधिकतम क्षमता है जो एक पूर्णांक स्टोर कर सकता है। और जब आप उस सीमा पर जाते हैं, तो यह नकारात्मक पक्ष पर वापस आ जाएगा। के लिए 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 को इस मान में जोड़ा जाता है।



Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow