Warum verhält sich mein .net Int64 wie Int32?

7

Ich beobachte ein seltsames Verhalten in einem .net-Programm:

%Vor%

Warum verhält sich mein Int64 wie Int32, obwohl Int64.MaxValue zu bestätigen scheint, dass er 64 Bits verwendet?

Wenn es relevant ist, verwende ich ein 32-Bit-Betriebssystem und die Zielplattform ist auf "Any CPU"

gesetzt     
Brann 06.05.2009, 13:28
quelle

2 Antworten

20

Ihr RHS verwendet nur Int32 -Werte, so dass die gesamte Operation mit Int32 arithmetic ausgeführt wird, dann wird das Int32 result auf einen langen Wert hochgestuft.

Ändern Sie es zu diesem:

%Vor%

und alles wird gut.

    
Jon Skeet 06.05.2009, 13:30
quelle
4

Verwenden:

%Vor%

Das L-Suffix bedeutet Int64-Literal, kein Suffix bedeutet Int32.

Was du geschrieben hast:

%Vor%

bedeutet:

%Vor%     
Pop Catalin 06.05.2009 13:33
quelle