Zoeken…


Overloop van gehele getallen

Er is een maximale capaciteit die een geheel getal kan opslaan. En wanneer je die limiet overschrijdt, keert het terug naar de negatieve kant. Voor int is het 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

Gebruik voor alle gehele getallen buiten dit bereik de naamruimte System.Numerics met het gegevenstype BigInteger. Controleer onderstaande link voor meer informatie https://msdn.microsoft.com/en-us/library/system.numerics.biginteger(v=vs.110).aspx

Overloop tijdens bedrijf

Overloop gebeurt ook tijdens de operatie. In het volgende voorbeeld is x een int , is 1 standaard een int . Daarom is toevoeging een int toevoeging. En het resultaat zal een int . En het zal overlopen.

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

U kunt dat voorkomen door 1L te gebruiken. Nu wordt 1 een long en wordt toevoeging een long toevoeging

int x = int.MaxValue;               //MaxValue is 2147483647
long y = x + 1L;                    //It will be OK
Console.WriteLine(y);               //Will print 2147483648

Bestellen doet ertoe

Er is een overloop in de volgende code

int x = int.MaxValue;
Console.WriteLine(x + x + 1L);  //prints -1

Terwijl er in de volgende code geen overloop is

int x = int.MaxValue;
Console.WriteLine(x + 1L + x);  //prints 4294967295

Dit komt door de volgorde van links naar rechts van de bewerkingen. In het eerste codefragment loopt x + x over en daarna wordt het een long . Anderzijds wordt x + 1L long en daarna wordt x toegevoegd aan deze waarde.



Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow