Bases de la programmation en C
struct { unsigned int x : 3; } s;
int v = 9;
s.x = v;
printf("%d\n", s.x);Quelle est la sortie obtenue en exécutant le code ci-dessus, qui stocke 9 dans un champ de bits de 3 bits ?
- A1
- B7
- C9
Afficher la réponse et l'explication
Réponse : A. 1
x est un champ de bits non signé de 3 bits : il ne peut représenter que 0 à 7. Stocker une valeur qui ne tient pas dans un type non signé donne le reste de sa division par 2³ = 8 : 9 devient donc 1. Les champs de bits servent à regrouper de petites valeurs, comme les champs de configuration d'un registre ou les indicateurs d'une communication, mais des détails comme l'ordre des bits des champs varient selon l'implémentation. Avec gcc, affecter directement la constante 9 à s.x donne un avertissement.
Continuer : 9 autres questions sur Bases de la programmation en C