Recherche…


Débordement d'entier

Il existe une capacité maximale qu'un entier peut stocker. Et lorsque vous dépassez cette limite, elle retournera au côté négatif. Pour int , c'est 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

Pour tous les nombres entiers hors de cette plage, utilisez namespace System.Numerics qui a le type de données BigInteger. Consultez le lien ci-dessous pour plus d'informations https://msdn.microsoft.com/en-us/library/system.numerics.biginteger(v=vs.110).aspx

Débordement pendant le fonctionnement

Le débordement se produit également pendant l'opération. Dans l'exemple suivant, x est un int , 1 est un int par défaut. Par conséquent , l' addition est un int addition. Et le résultat sera un int . Et ça va déborder.

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

Vous pouvez empêcher cela en utilisant 1L. Maintenant, 1 sera un long et l'addition sera un long ajout

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

Questions de commande

Il y a un débordement dans le code suivant

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

Considérant que dans le code suivant il n'y a pas de débordement

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

Cela est dû à l’ordre de gauche à droite des opérations. Dans le premier code, le fragment x + x déborde et devient ensuite long . Par contre, x + 1L devient long et après cela, x est ajouté à cette valeur.



Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow