Serie 6 Corrigé
Exercice 1 (niveau 1):Tailles des variables des types de base avec sizeof()
Voici le résultat de l'exécution du programme (depuis la VM 2015-16):
Taille d'un char : 1
Taille d'un short int : 2
Taille d'un int : 4
Taille d'un long int : 8
Taille d'un long long int : 8
Taille d'un int8_t : 1
Taille d'un float : 4
Taille d'un double : 8
Taille d'un long double : 16
1.1 : Puisqu'une variable de type float occupe 4 bytes, on peut stocker 1024 / 4 = 256
variables de type float dans 1024 bytes. Pour les double, on peut y stocker
seulement 128 variables
1.2 : La taille du type int en bits est de 4 bytes * 8 = 32 bits, car il y a 8 bits par byte.
1.3 : Oui, depuis la VM 2015-16 le type int est codé sur 4 octets tandis que long int
est codé sur 8 octets. Par contre il n’y a pas de différence entre long int et long long
int car les deux types sont sur 8 octets.
Exercice 2 (niveau 1): Conséquences d'un overflow avec des nombres entiers
Les résultats, qu'il fourmit, sont :
500 + 2500 = 3000
1000000000 + 1000000000 = 2000000000
1500000000 + 1500000000 = -1294967296 (overflow)
Comme un type int est codé sur 32 bits (avec signe), l'intervalle des valeurs admises
est [-231...231-1] = [-2147483648...2147483647]. C'est beaucoup, mais pas suffisant
pour faire le calcul demandé.
Exercice 3 (niveau 1): Le compteur entier détraqué
Le programme incrémente bien la variable, jusqu'à ce que celle-ci atteigne la valeur
entière positive maximum 2147483647, qui est équivalente à 231 -1.