7
Kann mir jemand den Grund des Überlaufs in Variable a erklären? Beachten Sie, dass b größer als a ist.Merkwürdiger C# Überlauffehler
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 . . .
Vielen Dank!
Vielleicht könnte Laufzeit flexibler sein und "Berechnung" automatisch "erweitern", wenn es sieht, dass Ausdruck lange gespeichert wird? –
@Petar: Ich denke, das wäre eine schlechte Idee. Es würde die Sprache viel komplizierter machen. Es ist leicht, dieses Problem zu vermeiden, und es hält die Sprache einfach - es gibt einige Stellen, wo die Bedeutung eines Ausdrucks von seinem Kontext abhängt (z. B. Lambda-Ausdrücke), aber ich möchte nicht mehr sehen. –