Considérez cetteint ou uint ou ce
int i = 2147483647;
var n = i + 3;
i = n;
Console.WriteLine(i); // prints -2147483646 (1)
Console.WriteLine(n); // prints -2147483646 (2)
Console.WriteLine(n.GetType()); // prints System.Int32 (3)
Je suis confondu avec la suite
- (1) comment pourrait-int maintenir la valeur -2147483646? (Plage int = -2147483648 à 2147483647)
- (2) pourquoi est-ce -2147483648 d'impression mais pas 2.147.483.648 (compilateur devrait mieux décider type que gamme int dépasse)
- (3) si elle est convertie quelque part, pourquoi n.GetType() donne System.Int32 ?
Edit1: Fait la correction: Maintenant, vous obtiendrez ce que je veux. (désolé pour cela)
var n = i + 1; à
var n = i + 3;
Edit2: une chose, si comme trop-plein, pourquoi une exception ne ressuscitent pas?
Addition: que le débordement se produit, est-il pas droit de fixer à un autre type en conséquence le type de
var n
dans la déclaration var n = i + 3;
?
Nous vous invitons à proposer un meilleur titre, car cela ne fait pas de sens pour moi .... au moins
Merci
pour quoi voter? –