Negativer Operator ignoriert für int.MinValue [Duplikat]C#

Ein Treffpunkt für C#-Programmierer
Anonymous
 Negativer Operator ignoriert für int.MinValue [Duplikat]

Post by Anonymous »

beim Versuch, den negativen Operator (-) auf eine Zahl mit dem minimalen INT-Wert anzuwenden (Wert

Code: Select all

-2147483648
), 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 >

Code: Select all

int.MaxValue
. Stattdessen wird der negative Operator ( -) ignoriert und temp2 endet mit einem Wert von -2147483648 (

Code: Select all

int.MinValue
, 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 ?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post