Big Tuto : Programmez avec le langage C
De la théorie à la pratique
Chapitre 5 : Les variables
Tutoriel présenté par : The Ludovyc et Jérémie F. Bellanger (Jay)
The Ludovyc
Publication : 30 mars 2014
Dernière révision : 17 avril 2016
Dans ce chapitre, nous allons aborder les variables ! Et comme vous allez le voir, ça va être du lourd, et ça, c'est cool !
Pour commencer, il faut savoir qu'une variable peut être signée (c'est à dire être négative ou positive : par exemple -256 ou +256) ou non-signée (dans ce cas, nous la considérerons comme absolue).
Mais à quoi ça sert, me direz-vous ?
Eh bien, tout simplement, avec le même nombre de bits, on peut soit gérer autant de nombres négatifs que positifs, soit gérer le double de nombres absolus. Si on prend l'exemple des char : un char prend un slot en mémoire, c'est-à-dire un octect soit 8bits. D'un point de vue général, le bit de poids fort est utilisé pour le signe donc avec un char, on peut compter de -128 jusqu'à 127 s'il est signé ou de 0 à 255 s'il est non-signé.
Suivant les usages, ce sera donc à vous de déterminer le choix le plus judicieux, sachant que toutes les variables sont signées par défaut, et qu'il faut l'indiquer, si on veut qu'elles ne soient pas signées (= unsigned), comme ceci :
char c = 127;
unsigned char c = 255;
Je vais maintenant vous proposer une petite liste des différents types de variables avec leurs paramètres printf() le plus souvent utilisés :
Les types entiers :
char | |
Description |
Variable de base pour les petits nombres, les booléens, et les lettres. Souvent nommé "c" dans le code. |
Taille en octet(s) | 1 (taille invariable sur tout type de machine) |
Déclaration (code) | (unsigned) char c = 8; |
Valeurs par défaut | -128 à 127 |
Valeurs, non-signé | 0 à 255 (unsigned) |
Notation printf() |
%d pour la valeur décimale %c pour l'afficher sous forme de lettre |
short | |
Description |
Variable utilisée pour les valeurs entières. |
Taille en octet(s) | 2 (taille invariable sur tout type de machine) |
Déclaration (code) | (unsigned) short s = 16; |
Valeurs par défaut | -32768 à 32767 |
Valeurs, non-signé | 0 à 65535 (unsigned) |
Notation printf() |
%d pour la valeur décimale |
int | |
Description |
Variable la plus souvent utilisée. Pour les valeurs entières. |
Taille en octet(s) | 2 ou 4 |
Déclaration (code) | (unsigned) int i = 32; |
Valeurs par défaut | -2147483648 à 2147483647 (sur 4 octets) |
Valeurs, non-signé | 0 à 4294967295 (unsigned, sur 4 octets) |
Notation printf() |
%d pour la valeur décimale %p pour la valeur héxadécimale |
long | |
Description |
Variable pour les très grandes valeurs entières. |
Taille en octet(s) | 4 ou 8 |
Déclaration (code) | (unsigned) long l = 64; |
Valeurs par défaut | -4x10e16 à 3x10e16 (à peu près, pour 8o) |
Valeurs, non-signé | 0 à 7x10e16 (unsigned, à peu près, pour 8o) |
Notation printf() |
%ld |
Les types rationnels :
Je tiens à préciser ici un point de syntaxe important : la virgule utilisée en c pour séparer les chiffres est généralement un point, comme en anglais (même si cela peut varier selon les IDE). 1,37 s'écrira donc 1.37
float | |
Description |
Variable courament utilisée pour les nombres flottants (= à virgule). |
Taille en octet(s) | 4 |
Déclaration (code) | float f = 12.8; |
Mantisse | simple 6 |
Valeurs | 3,4x10e-38 à 3,4x10e38 |
Notation printf() |
%f |
double | |
Description |
Variable moins couramment utilisée que le float mais plus précise et avec un domaine plus large. |
Taille en octet(s) | 8 |
Déclaration (code) | double d = 51.2; |
Mantisse | double 15 |
Valeurs | 1,7x10e-308 à 1,7x10e308 |
Notation printf() |
%f |
Eh voilà ! Maintenant pour vous faire un peu manipuler toutes ces variables, passons à quelques exercices pratiques !
Exercice 1 :
Votre mission, si vous l'acceptez (et j'espère bien que oui ! ), va être d'écrire un petit programme qui va afficher à l'aide de la fonction printf() toutes les variables que nous venons de voir. Vous n'oublierez pas de bien mettre un retour chariot (\n) après chaque valeur, sauf la dernière, sinon elles vont être agglutinées !
Cet exercice a pour but de vous familiariser avec toutes ces variables et de comprendre comment les afficher dans la console. Et pas d'inquiétude, c'est très rapide à faire ! Voilà d'ailleurs le début du code, pour vous aider :
#include <stdio.h> int main(){
char c = 8; } |
Ne vous inquiétez pas si vous ne voyez pas 'c' s'afficher en lettres, c'est normal.
Correction de l'exercice :
#include <stdio.h> int main(){
char c = 8;
short s = 16;
int i = 32;
long l = 64;
float f = 12.8;
double d = 51.2; } |
Exercice défi :
Ecrire un programme qui affiche les différentes tailles des types de variables vues dans ce chapitre.
Défi 1 : ne pas utiliser de variable pour le stockage de la taille.
Défi 2 : utiliser le type de variable le plus adapté pour les différentes variables de stockage, et les utiliser pour l'affichage.
Défi 3 : n'utiliser qu'une seule variable avec le type le plus adapté pour le stockage et l'affichage.
Note : la fonction sizeof() retourne la taille du type de variable mis en paramètre.
Exemples pour vous aider :
//Sans variable de stockage
//Avec une variable de stockage printf("%d\n", i);
//Indices
c = sizeof(double); |
Je vous donnerai la correction de cet exercice dans le prochain chapitre ! @ bientôt !