beim Versuch, den negativen Operator (-) auf eine Zahl mit dem minimalen INT-Wert anzuwenden (Wert
), es wird vollständig ignoriert, anstatt eine Überlaufexception  zu werfen. Zum Beispiel habe ich den folgenden Code: < /p>
Code: Select all
int temp = int.MinValue;//-2147483648
int temp2 = -temp;//Should evaluate to 2147483648, which would throw an OverflowException, but instead is ignored and returns -2147483648
Der Temp  Variable wird dem Wert -2147483648  zugewiesen. Dies ist der Mindestwert für den Int  -Typ und ist vollkommen gültig. Die Variable temp2  sollte jedoch eine Überlaufexception  werfen, da 2147483648 >
. Stattdessen wird der negative Operator ( -) ignoriert und temp2  endet mit einem Wert von -2147483648  (
, das gleiche wie Temp). Das gleiche 
Problem tritt auf, wenn ich stattdessen mit -1 multipliziere: < /p>
Code: Select all
int temp2 = -1 * temp;//Same [url=viewtopic.php?t=11587]problem[/url] as above
Alles funktioniert wie erwartet, wenn temp  ein positiver Wert oder ein Wert größer als int.MinValue  ist, und -Int.MinValue  gibt eine Kompilierung an -Time -Fehler (wie erwartet). Warum wird der negative Operator ignoriert, anstatt eine Überlaufexception ?