sizeof (long int) = 4 ???
-
Hallo,
wenn ich eine Variable vom Typ long int in C deklariere und dann folgendes Ausgeben lasse:printf ("%d\n", sizeof (int)"); printf ("%d\n", sizeof (long int)");
erhalte ich bei beiden Ausgaben: 4
Ich brauche eine long int variable, weil ich mit memcpy die Einsen und Nullen einer Double-Zahl in einen Integer speichern möchte, um dann mit Shiftoperationen die Zahl auseinandernehmen kann.
Das Problem ist nur, dass
double zahl = -12.2; long int tmp = 0; tmp = (long int*)memcpy (&tmp, &zahl, 4);
den folgenden Fehler bringt:
Run-Time Check Failure #2 - Stack around the variable 'tmp' was corrupted.
Was geht da schief? Warum ist mein long int nicht 64 bit größ?
-
Du brauchst auf x86 ein long long int für 64 Bits oder nimmst du einfach (u)int64_t (stdint.h) oder
double d = ...; char d_bits[sizeof d]; memcpy(d_bits, &d, sizeof d);
-
Danke. Mit einem "long long" klappt es (long long int, gibts nicht)