Extraña c # error de desbordamiento
-
23-08-2019 - |
Pregunta
Puede alguien explicar la razón de desbordamiento en la variable a? Tenga en cuenta que b es mayor que a.
static void Main(string[] args)
{
int i = 2;
long a = 1024 * 1024 * 1024 * i;
long b = 12345678901234567;
System.Console.WriteLine("{0}", a);
System.Console.WriteLine("{0}", b);
System.Console.WriteLine("{0}", long.MaxValue);
}
-2147483648
12345678901234567
9223372036854775807
Press any key to continue . . .
Gracias!
Solución
El RHS es un int multiplicación porque cada parte de la expresión es un int. El hecho de que se está asignado a un tiempo, no significa que está realizado con mucho aritmética.
Cambiar a:
long a = 1024L * 1024 * 1024 * i;
y que va a trabajar. (La diferencia es la L al final de la primera 1024).
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow