PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : C#: Shift-Operation bei Int64


Elemental
2012-11-11, 16:27:49
Hallo,
Folgende 2 Zeilen Code machen mir gerade Kopfzerbrechen:

int iTest = 1 << 31;
Int64 iTest2 = 1 << 32;


iTest ist 0x80000000
iTest2 ist 0x0000000000000001

Anscheinend funktioniert das shiften bei Int64 nicht :confused:
Ich krieg aber auch keine Fehlermeldung :confused:

mfG
Elemental

RLZ
2012-11-11, 16:43:38
Klar funktioniert das Shiften bei Int64. Das machst du aber hier nicht.
Du schreibst hier implizit:
Int64 iTest2 = (Int64)(1 << 32)

1.0 ist double
1.0f ist float
1 ist int
1L ist long (aka Int64)

Korrekt wäre also:
Int64 iTest2 = 1L << 32

Elemental
2012-11-11, 17:31:02
Verstehe, danke! :)

Gast
2012-11-29, 12:01:45
alternativ:

Int64 iTest = ((Int64) 1) << 32;

oder auch

Int64 iTest = 1;
iTest = iTest << 32;