7
¿Alguien me puede explicar el motivo del desbordamiento en la variable a? Tenga en cuenta que b es más grande que a.Extraño C# error de desbordamiento
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 . . .
Gracias!
¿Tal vez el tiempo de ejecución podría ser más flexible y automáticamente "expandir" el cálculo si ve que la expresión se almacenará en largo? –
@Petar: Creo que sería una mala idea. Haría el lenguaje mucho más complicado. Es fácil evitar este problema, y mantiene el lenguaje simple: hay algunos lugares donde el significado de una expresión depende de su contexto (por ejemplo, expresiones lambda) pero no quiero ver más. –