Dupliquer possible:
Que signifie ‘unsigned temp: 3’
Ceci est un exemple de code C d’une page de référence.
signed int _exponent:8;
Quelle est la signification du colon avant “8” et “8” lui-même?
C’est un bitfield. Ce n’est valable que dans une définition de struct
et cela signifie que le système n’utilisera que 8 bits pour votre entier.
C’est un champ de bits, une caractéristique obscure et erronée des structures. Cela devrait vous suffire pour rechercher les informations dont vous avez besoin pour gérer les champs de bits dans le code des autres. Quant à votre propre code, n’utilisez jamais de champs de bits.
Edit: Comme demandé par Zack, les champs de bits présentent des inconvénients importants par rapport à l’exécution de votre propre calcul arithmétique, sans aucun avantage. En voici quelques uns:
Pour les indicateurs à un seul bit, utiliser votre propre arithmétique de bits au lieu de champs de bits est une évidence. Pour des valeurs plus importantes, vous devez compresser, s’il est trop pénible d’écrire toute l’arithmétique de bits, écrivez quelques macros simples.
C’est une spécification de bitfield .
Cela signifie que _exponent
ne prend que 8
bits de l’ signed int
ce qui prend généralement plus de 8
bits. Généralement, les champs de bits sont utilisés avec des types non signés.
IIRC, le compilateur avertirait si quelque chose qui ne rentre pas dans 8 bits est écrit dans _exponent
.
Lorsque cette instruction est à l’intérieur d’une structure, signifie champs de bits .