Types primitifs
Entiers non signés
Les types entiers non signés (comme unsigned int
, unsigned long
, unsigned char
etc.) sur n bits permettent de stocker des valeurs entières entre 0 et
Type | Nombre de bits |
---|---|
int | 32 |
char | 8 |
short | 16 |
long | 32 ou 64 |
long long | 64 |
- Quelles sont les valeurs possibles pour un
unsigned char
?Entre \(0\) et \(2^{8}-1\) autrement ditentre 0 et 255.
Entiers signés
Les types entiers signés (comme int
, long
, char
etc.) sur n bits permettent de stocker des valeurs entières entre char
qui est souvent non signé, mais pas toujours.
-
Quelles sont les valeurs possibles pour un
signed char
?Entre \(-2^{7}\) et \(2^{7}-1\) autrement dit entreEntre -128 et 127. -
Quelles sont les valeurs possibles pour un
char
?Généralement, entre \(0\) et \(2^{8}-1\) autrement dit entreEntre 0 et 255. En effet, char
est non signé par défaut. -
Pour quelle raison
char
est-il non signé par défaut ?Pour faire le lien avec les caractères ASCII (nombres entre 0 et 127) puis ISO-8859-1 qui associe des caractères comme é, è etc. à des nombres entre 128 et 255. Il y a d'autres codages comme Windows-1252.
Représentations
Octale
En ajoutant le symbole 0
, on écrit un nombre entier en représentation octale :
02322
- Combien vaut
051
?5×8 + 1 = 41 (quarante et un).
hexadécimale
Avec 0x
, pareil mais c'est en hexadécimal :
0x4D2
.
- Combien vaut
051
?5×16 + 1 = 81 (quatre-vingt un).
Nombres flottants
Il n'y a pas de nombres flottants non signés.
Type | Nombre de bits | Exemples |
---|---|---|
float | 32 | 12.34F |
double | 64 | 12.34, 12.e-4 |
long double | 80 ou 128 | 12.34L |
Conversions
Implicites
On convertit de int
à float
float x = 1;
Explicites avec cast
L'inverse, convertir n'est pas automatique, il faut "caster" :
float x = ((float) 2) / 3;
- Comment vaut
2/3
?0 car /
sur des entiers est la division euclidienne en C. - Comment vaut
((float) 2) / 3
?0.666666... car /
sur des floats est la division euclidienne en C.