Bases de la programmation en C
uint8_t x = 250;
for (int i = 0; i < 10; i++)
x++;
printf("%d\n", x);uint8_t est un type entier non signé de 8 bits. Quelle est la sortie obtenue en exécutant le code ci-dessus, qui incrémente x 10 fois ?
- A4
- B255
- C260
Afficher la réponse et l'explication
Réponse : A. 4
uint8_t peut représenter de 0 à 255. La norme prévoit qu'une valeur qui ne tient pas dans un type entier non signé devient le reste de sa division par 2⁸ = 256 : en comptant de 1 en 1 à partir de 250, la valeur qui suit 255 revient à 0. Après 10 incrémentations, on obtient le reste de la division de 250 + 10 = 260 par 256, soit 4. En revanche, le dépassement de capacité dans un calcul sur un type entier signé est un comportement indéfini.
Continuer : 9 autres questions sur Bases de la programmation en C