Mes notes sur le C, partie 2 [types et variables]

Mes notes sur le C, partie 2 [types et variables]

[menu_c] 

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)

TypeTailleBorne inférieureBorne inférieure (formule)Borne supérieureBorne supérieure (formule)
signed char≥ 8 bits-128-(27)+12727-1
unsigned char≥ 8 bits00+25528-1
short≥ 16 bits-32 767-(215-1)+32 767215-1
unsigned short≥ 16 bits00+65 535216-1
int≥ 16 bits-32 767-(215-1)+32 767215-1
unsigned int≥ 16 bits00+65 535216-1
long≥ 32 bits-2 147 483 647-(231-1)+2 147 483 647231-1
unsigned long≥ 32 bits00+4 294 967 295232-1
long long (C99)≥ 64 bits-9 223 372 036 854 775 807-(263-1)+9 223 372 036 854 775 807263-1
unsigned long long (C99)≥ 64 bits00+18 446 744 073 709 551 615264-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)

TypeLettre
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)

TypeLettre
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.

Partager

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *