Bases de la programmation en C
Dans les programmes embarqués, une variable qui reçoit la valeur d'un registre de périphérique de 32 bits est souvent déclarée avec le type uint32_t de stdint.h plutôt qu'avec unsigned int. Quelle en est la raison principale ?
- AParce qu'un uint32_t ne revient pas à 0 lorsqu'une valeur dépasse le maximum, mais reste bloqué au maximum (saturation)
- BParce que les lectures et écritures d'une variable déclarée en uint32_t ne sont plus supprimées par l'optimisation du compilateur
- CParce que la taille d'unsigned int varie selon l'implémentation, alors qu'uint32_t est défini comme un entier non signé d'exactement 32 bits
Afficher la réponse et l'explication
Réponse : C. Parce que la taille d'unsigned int varie selon l'implémentation, alors qu'uint32_t est défini comme un entier non signé d'exactement 32 bits
uint8_t, uint16_t, uint32_t, int32_t et les autres types de stdint.h sont des types entiers dont le nombre de bits est fixé par leur nom (types entiers de largeur fixe). unsigned int peut faire 16 ou 32 bits : employer un type de largeur fixe lorsque la largeur doit correspondre à celle d'un registre ou lorsqu'on définit le format des données d'une communication garantit que le sens ne change pas quand le code passe sur un autre processeur. Comme les autres types entiers non signés, uint32_t prend en cas de dépassement la valeur du reste de la division par 2³². Pour que les lectures et écritures ne soient pas supprimées, on ajoute volatile, indépendamment du type.
Continuer : 9 autres questions sur Bases de la programmation en C