Maison >développement back-end >C++ >Comment les deux-points spécifient-ils la taille des bits dans les déclarations de structure C ?

Comment les deux-points spécifient-ils la taille des bits dans les déclarations de structure C ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-24 04:54:15653parcourir

How Do Colons Specify Bit Sizes in C   Struct Declarations?

La signification des deux-points dans les déclarations de structure

Dans les déclarations de structure C, les deux-points (:) suivis d'entiers peuvent être utilisés pour spécifier le bit taille des membres de la structure, limitant leur plage de valeurs. Une telle syntaxe est souvent utilisée pour représenter des valeurs compressées, comme le démontre l'exemple ci-dessous :

typedef struct {
    unsigned char a : 1;
    unsigned char b : 7;
} tOneAndSevenBits;

Dans cet exemple, l'opérateur deux-points limite a à un bit et b à sept bits. Ensemble, ils forment une valeur de 8 bits. Cette technique est couramment utilisée pour accéder à des données compactées, telles que :

typedef struct {
    unsigned char leftFour  : 4;
    unsigned char rightFour : 4;
} tTwoNybbles;

Ici, un octet est divisé en deux nybbles de 4 bits. La norme C définit cette syntaxe dans la section 9.6 :

identifieropt attribute-specifieropt : constant-expression

L'expression constante spécifie la taille en bits. Il doit être supérieur ou égal à zéro et peut être plus grand que le type du champ de bits, auquel cas les bits supplémentaires sont utilisés pour le remplissage.

L'allocation et l'alignement des champs de bits sont définis par l'implémentation, certaines machines les emballant de droite à gauche et d'autres de gauche à droite. Ils peuvent également chevaucher des unités adressables sur certains systèmes.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn