# Variables

> Une variable est un élément qui associe un **identifiant** à une **valeur**.

Une variable est un espace mémoire nommé qui permet de stocker une valeur manipulée par le programme. En langage C, chaque variable possède :

- un type (entier, réel, caractère, etc.)
- un nom
- une valeur (modifiable au cours de l’exécution)

## Caractéristiques

Une variable possède plusieurs caractéristiques ou propriétés.

La **déclaration**, c'est l'endroit dans le code qui défini l'existence de la variable.

```c
int age = 19;
```

L'**initialisation** : attribue une valeur à la valeur.

Utiliser une variable non initialisée conduit à un comportement indéfini. Les varaiables sont pas toujours initialisées à une valeur par défaut (comme 0 par exemple).

Un **nom** sous lequel la variable est déclarée. Dans cette déclaration le nom de la variable est `age`.

Un **type**. Dans la mémoire d'un ordinateur, toute information est stockée sous forme d'éléments binaires appelés `bit` (en: binary digit, nombre binaire). Un même ensemble de bits peut être représenté sous différentes aspects : nombre entier, nombre réel, texte, photo, vidéo, audio, ... C'est la convention d'interprétation du type qui défini la valeur de la variable.

Dans cette déclaration le type de la variable `age` est un entier `int`.

La **taille** associée au type. Dans le cas des types fixe, le type de la variable spécifie aussi le nombre de bits ou le nombre de mots (en: bytes, octets) utilisés.

Dans cette déclaration la taille de la variable `age` est de 4 octets ou 32 bits, qui est la taille associée à un type `int`.

La **valeur**, c'est la valeur intrasèque des bits suivant la représentation associée au type;

Dans cet exemple la valeur de la variable `age` est `10`.

La **portée**, c'est la portion de code où la variable est utilisable. Une variable est accessible depuis sa définition jusqu'à la fin du bloc où elle est déclarée.

Variable locale : déclarée dans une fonction ou un bloc

Variable globale : déclarée en dehors de toute fonction

Les variables déclarées dans une fonction sont locales à cette fonction. Les paramètres d’une fonction sont eux aussi des variables locales.

### Règles

#### Déclaration

> [!WARNING]
> Les variables doivent être déclarées **avant** d'être utilisées.


```c
#include <stdio.h>

int main()
{
  printf("%d", age);
  int age = 10;
}
```

Ce code provoque une erreur : la variable est non déclarée avant sont utilisation !

```
error: ‘age' undeclared (first use in this function)
```

Voici le code correct

```c
#include <stdio.h>

int main()
{
  int age = 10;
  printf("%d", age);
}
```

## Types courants

int : nombre entier

float : nombre réel (simple précision)

double : nombre réel (double précision)

char : caractère
