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, charest non signé par défaut. -
Pour quelle raison
charest-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.