
Mes notes sur le C, partie 2 [types et variables]
Pour cette partie, il faut d’abord comprendre comment sera stocké nos variables.
Elles sont stockées en mémoire avec une adresse et une valeur, sous cette forme :
< adresse > < valeur >
< 50 > < 3.5 >
< 10 > < 50 >
< 30 > < -59.6 >
Par exemple cette variable
int nombre = 10;
Cette variable demande à l’ordinateur de bien vouloir lui fournir un emplacement en mémoire pour contenir le nombre “10”.
En plus de ça on ne demande pas n’importe quel type d’emplacement, le fait de préciser que notre variable sera un integer (int) permet de préciser à l’ordinateur que la taille de notre variable sera comprise entre -32 767 et +32 767.
Ce fonctionnement permet une meilleur gestion de la mémoire vive.
Voici un tableau représentant les types de base. (source wikipedia)
Type | Taille | Borne inférieure | Borne inférieure (formule) | Borne supérieure | Borne supérieure (formule) |
---|---|---|---|---|---|
signed char | ≥ 8 bits | -128 | -(27) | +127 | 27-1 |
unsigned char | ≥ 8 bits | 0 | 0 | +255 | 28-1 |
short | ≥ 16 bits | -32 767 | -(215-1) | +32 767 | 215-1 |
unsigned short | ≥ 16 bits | 0 | 0 | +65 535 | 216-1 |
int | ≥ 16 bits | -32 767 | -(215-1) | +32 767 | 215-1 |
unsigned int | ≥ 16 bits | 0 | 0 | +65 535 | 216-1 |
long | ≥ 32 bits | -2 147 483 647 | -(231-1) | +2 147 483 647 | 231-1 |
unsigned long | ≥ 32 bits | 0 | 0 | +4 294 967 295 | 232-1 |
long long (C99) | ≥ 64 bits | -9 223 372 036 854 775 807 | -(263-1) | +9 223 372 036 854 775 807 | 263-1 |
unsigned long long (C99) | ≥ 64 bits | 0 | 0 | +18 446 744 073 709 551 615 | 264-1 |
Vous remarquez sous doute l’ajout de signed et unsigned, il s’agit en fait de valeur soit positive et négative (signed) ou seulement positive (unsigned).
Dans la partie 1, je vous ai montré comment afficher une variable de type int.
printf("%d", &nombre);
L’utilsation de “%d” singifie que nous allons afficher une variable de type int.
Voici la liste des symbole à utiliser pour printf (source wikipedia)
Type | Lettre |
---|---|
int | %d |
long | %ld |
float/double | %f / %lf |
char | %c |
string (char*) | %s |
pointeur (void*) | %p |
short | %hd |
entier hexadécimal | %x |
Voici également la liste pour la fonction scanf (source wikipedia)
Type | Lettre |
---|---|
int | %d |
long | %ld |
float/double | %lf |
char | %c |
string (char*) | %s |
entier hexadécimal | %x |
Sincèrement je ne sais pas encore pourquoi on doit fournir un format spécifique pour afficher tel ou tel type de variable.
Pour le moment je dirais qu’il faut retenir ça par cœur.