Types de données
Le langage C offre quelques types primitifs :
| Type | Langage C | Taille | Littéral |
|---|---|---|---|
| Entier | char | 1 octet | 127 ou '~' |
| short | 2 octets | 32767 | |
| int | 4 octets | 2147483647 | |
| long | 8 octets | 9223372036854775807 | |
| Réel | float | 4 octets | 3.1415926f |
| double | 8 octets | 3.141592653589793 |
Il est possible de préciser, pour les types entiers, que les valeurs ne peuvent être que positives ou nulles, permettant de représenter de plus grandes valeurs :
| Langage C | Taille | Littéral |
|---|---|---|
| unsigned char | 1 octet | 255 |
| unsigned short | 2 octets | 65535 |
| unsigned int | 4 octets | 4294967295U |
| unsigned long | 8 octets | 18446744073709551615U |
Il est à noter que sur les plateformes Windows, ce sont les types long long et unsigned long long qui ont une taille de 8 octets.
Plages de valeurs
Ce qui différencie les types d'entiers du langage C, ce sont leurs tailles. La taille permet de déterminer la plage de valeurs possible, qui se calcule selon le nombre de bits de chacun des types :
| Langage C | Possibilités | Plage |
|---|---|---|
| unsigned char | 28 | [0; 255] |
| unsigned short | 216 | [0; 65535] |
| unsigned int | 232 | [0; 4294967295] |
| unsigned long | 264 | [0; 18446744073709551615] |
La plage est différente pour les types signés, puisqu'un bit sert à préciser le signe :
| Langage C | Plage |
|---|---|
| char | [-128; 127] |
| short | [-32768; 32767] |
| int | [-2147483648; 2147483647] |
| long | [-9223372036854775808; 9223372036854775807] |
Les types réels obéissent à une autre logique. Leur limite pratique est la précision plutôt que la plage :
| Langage C | Plage approximative | Chiffres significatifs |
|---|---|---|
| float | ±3.4e38 | ~7 |
| double | ±1.8e308 | ~15 |