Eventuali duplicati:
What does 'unsigned temp:3' mean?cosa significa in c int a: 16 ;?
prega di cosa vuol dire questa notazione
int a: 16;
Ho trovato che è un codice come questo e viene compilato.
nome della struttura { int a: 16; }
Eventuali duplicati:
What does 'unsigned temp:3' mean?cosa significa in c int a: 16 ;?
prega di cosa vuol dire questa notazione
int a: 16;
Ho trovato che è un codice come questo e viene compilato.
nome della struttura { int a: 16; }
Questo è un bitfield.
Questo particolare bitfield non ha molto senso in quanto è possibile utilizzare un tipo a 16 bit e si sta sprecando spazio mentre il bitfield è riempito fino alle dimensioni di int
.
Di solito, lo si utilizza per le strutture che contengono elementi di dimensioni bit:
struct {
unsigned nibble1 : 4;
unsigned nibble2 : 4;
}
E 'un campo di bit.
Non ho mai visto un bitfield a 16 bit; di solito è un breve
struct name { int a:16; }
Significa a
è definito come 16 bit spazio memoria. I rimanenti bit (16 bit) da int
possono essere utilizzati per definire un'altra variabile, dire b
, così:
struct name { int a:16; int b:16; }
Così se int
è di 32 bit (4 byte), allora la memoria di uno int
è diviso in due variabili a
e b
.
PS: sto assumendo sizeof(int)
= 4 byte, e 1 byte = 8 bit
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.*/