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
Libérer: 2024-12-24 04:54:15
original
645 Les gens l'ont consulté

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;
Copier après la connexion

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;
Copier après la connexion

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
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal