ce sont des champs de bits.en struct, vous pouvez définir le nombre de bits sont affectés à la variable (remplaçant la norme pour le type de variable)
dans l'exemple ci-dessus x utilise seulement 1 octet et peut donc prendre que la valeur 0 ou 1.
voir l'exemple suivant de the C book. suivez le lien pour plus d'informations.
struct {
/* field 4 bits wide */
unsigned field1 :4;
/*
* unnamed 3 bit field
* unnamed fields allow for padding
*/
unsigned :3;
/*
* one-bit field
* can only be 0 or -1 in two's complement!
*/
signed field2 :1;
/* align next field on a storage unit */
unsigned :0;
unsigned field3 :6;
}full_of_fields;
Merci! Mais quel avantage cela a-t-il en déclarant simplement un entier régulier? –
@Joe M: Il utilise potentiellement moins d'espace. C'est plus utile lorsque vous avez plusieurs champs de bits, puisque le compilateur utilisera (espérons-le) moins de mémoire par structure dans ce cas que plusieurs entiers. –
Vous pouvez accéder aux champs individuellement au lieu d'écrire des éléments de manipulation de bits chaque fois que vous souhaitez y accéder. – Joey