by Anonymous » 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>
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 ?
beim Versuch, den negativen Operator (-) auf eine Zahl mit dem minimalen INT-Wert anzuwenden (Wert[code]-2147483648[/code]), es wird vollständig ignoriert, anstatt eine Überlaufexception zu werfen. Zum Beispiel habe ich den folgenden Code: < /p>
[code]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]
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 >[code]int.MaxValue[/code]. Stattdessen wird der negative Operator ( -) ignoriert und temp2 endet mit einem Wert von -2147483648 ([code]int.MinValue[/code], das gleiche wie Temp). Das gleiche [url=viewtopic.php?t=11587]Problem[/url] tritt auf, wenn ich stattdessen mit -1 multipliziere: < /p>
[code]int temp2 = -1 * temp;//Same [url=viewtopic.php?t=11587]problem[/url] as above
[/code]
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 ?