Mögliche Duplizieren:
What does 'unsigned temp:3' mean?was bedeutet das in c int a: 16;?
bitte, was diese Notation
int a bedeutet das: 16;
Ich fand es ist Code wie folgt und es kompiliert.
Strukturname { int a: 16; }
Mögliche Duplizieren:
What does 'unsigned temp:3' mean?was bedeutet das in c int a: 16;?
bitte, was diese Notation
int a bedeutet das: 16;
Ich fand es ist Code wie folgt und es kompiliert.
Strukturname { int a: 16; }
Dies ist ein bitfield.
Dieses spezielle Bitfeld macht nicht viel Sinn, da Sie nur einen 16-Bit-Typ verwenden können und Sie verschwenden etwas Platz, da das Bitfeld auf die Größe int
aufgefüllt wird.
Normalerweise Sie verwenden es für Strukturen, die Elemente der Bitgröße enthalten:
struct {
unsigned nibble1 : 4;
unsigned nibble2 : 4;
}
Es ist ein Bitfeld.
Ich habe noch nie ein 16 Bit Bitfeld gesehen; normalerweise ist das ein kurzer.
struct name { int a:16; }
Es bedeutet a
wird als 16-Bit- Speicherraum definiert. Die verbleibenden Bits (16 Bits) von int
kann definiert anderen Variablen verwendet werden, sagen b
, wie folgt aus:
struct name { int a:16; int b:16; }
Wenn also int
ist 32 Bit (4 Byte), so wird der Speicher einer int
geteilt in zwei Variablen a
und b
.
PS: Ich gehe davon aus sizeof(int)
= 4 Bytes und 1 Byte = 8 Bits
struct s
{
int a:1;
int b:2;
int c:7;
};/*size of structure s is 4 bytes and not 4*3=12 bytes since all share the same space provided by int declaration for the first variable.*/
struct s1
{
char a:1;
};/*size of struct s1 is 1byte had it been having any more char _var:_val it would have been the same.*/