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 ?