7
Quelqu'un peut-il m'expliquer la raison du débordement dans la variable a? Notez que b est plus grand que a.Étrange erreur de débordement de C#
static void Main(string[] args)
{
int i = 2;
long a = 1024 * 1024 * 1024 * i;
long b = 123456789;
System.Console.WriteLine("{0}", a);
System.Console.WriteLine("{0}", b);
System.Console.WriteLine("{0}", long.MaxValue);
}
-2147483648
123456789
9223372036854775807
Press any key to continue . . .
Merci!
Peut-être que le temps d'exécution pourrait être plus flexible et automatiquement "étendre" le calcul s'il voit que l'expression sera stockée longtemps? –
@Petar: Je pense que ce serait une mauvaise idée. Cela rendrait la langue beaucoup plus compliquée. Il est facile d'éviter ce problème et il garde le langage simple - il y a quelques endroits où la signification d'une expression dépend de son contexte (par exemple les expressions lambda) mais je ne veux pas en voir plus. –