Moin Rolf,
Ok, ein kleiner Test
DWORD b = -1; unsigned char *oct = (unsigned char*)&b; printf("%x %x %x %x", oct[0], oct[1], oct[2], oct[3] );
ff ff ff ff
das ist jetzt kein sonderlich guter Test.
Na doch, er will ja wissen, wie b
intern dargestellt wird. Gut, man könnte auch anders tricksen, es läuft aber auf das Gleiche hinaus:
typedef union {
DWORD dw;
unsigned char b[sizeof(DWORD)];
} DWordBytes;
Habe gerade mal mit dem Online C Compiler bei Tutorialspoint getestet, da kann man
unsigned int a = -1;
problemlos zuweisen und findet dann 0xffffffff vor.
Das ist in C und C++ sogar ein gängiges Vorgehen um sehr einfach den maximalen Wert eines unsigned Datentyps zu bestimmen, z.B.
const size_t MaxSize = -1;
printf("%xz\n", MaxSize);
/* gibt ffffffff bei 32 Bit aus, ffffffffffffffff bei 64 Bit */
Und
int a = 0xc0000000;
klappt auch. Offenbar prüft der nicht, ob er signed und unsigned mischt (da gibt's eine Option für damit er drüber mault, die wusste ich aber nicht mehr 😳)
Ja, wenn keine Prüfung eingeschaltet ist, wird einfach das gegebene Bitmuster anders interpretiert.
Viele Grüße
Robert