Doppelpunkt bei Membervariablen-Definition
-
Tag zusammen. Damit ich nicht immer den Kollegen von spieleprogrammierer.de mit allgemeinen C++ Fragen auf die Nerven geh, hab ich mich mal hier angemeldet. Ich denke ich werde in naechster Zeit oefters hier vorbeischauen und bin auf jeden Fall fuer jegliche Hilfe dankbar
So, zur eigentlichen Frage: Ich arbeite mich gerade durch Winsock-Tutorials und mir ist eine struct-Definition aufgefallen die mir irgendwie entgangen sein muss:
typedef struct { unsigned int h_len:4; // length of the header in DWORD char szAdditionalData[23]; } IPHeader;
Aus dem Titel zu erahnen verwirrt mich das h_len:4. Meine erste Vermutung war, dass es sich hierbei um eine Art "Offset" handeln muss, da die Laenge des IP-Headers nicht im 0. bis 4. Byte steht.
Kann mir das jemand genauer erklaeren ?
-
Das legt die Anzahl der Bits der Variable fest.
Google: bitfields und/oder Forensuche.
-
Aha, danke!
Es macht also keinen Unterschied ob ich schreibe:
unsigned int number:4;
bzw
unsigned short number:4;
oder sogar bloss
byte number:4;
Ist der Datentyp also trivial, da so oder so nach 4 Bits "abgeschnitten" wird ?
Und noch eine Verstaendnissfrage:
Kann ein signed int das auf 4 Bits 'gestutzt' wurde
> Werte von 0 bis 15 annehmen ODER
> Werte von -8 bis 7 annehmen ?EDIT: Ok, ich hab einen Artikel gefunden der's ganz gut erklaert.