Negativer Operator ignoriert für int.MinValue [Duplikat]
Posted: 12 Feb 2025, 12:52
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>
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>
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 ?
Code: Select all
-2147483648
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
Code: Select all
int.MaxValue
Code: Select all
int.MinValue
Code: Select all
int temp2 = -1 * temp;//Same [url=viewtopic.php?t=11587]problem[/url] as above