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

Introduction
Partie 1 [printf() et scanf()]
Partie 2 [types et variables]
Partie 3 [Chaîne de caractères & incrémentation]
Partie 4 [Les conditions]
Partie 5 [Les boucles]
Partie 6 [Les fonctions]
Partie 7 [Les prototypes et headers]
Partie 8 [Les pointeurs]
Partie 9 [Les tableaux]

 

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 

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.

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.

Laisser un commentaire

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

You may use these HTML tags and attributes:

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">