CPGE Oujda                                                                                                                                            Sup

Introduction aux types de données du langage C

 Les types de base du langage C

Au niveau du processeur, toutes les données sont représentées sous leur forme binaire et la notion de type n'a pas de sens. Cette notion n'a été introduite que par les langages de haut niveau dans le but de rendre les programmes plus rationnels et structurés. Mais même parmi les langages de haut niveau, on distingue ceux qui sont dits fortement typés (qui offrent une grande variété de types), comme le Pascal par exemple, de ceux qui sont dits faiblement ou moyennement typés (et plus proches de la machine) comme le C par exemple. Le langage C ne dispose que de 4 types de base :

Type C

Type correspondant

char

caractère (entier de petite taille)

int

entier

float

nombre flottant (réel) en simple précision

double

nombre flottant (réel) en double précision

Devant char ou int, on peut mettre le modificateur signed ou unsigned selon que l'on veut avoir un entier signé (par défaut) ou non signé. Par exemple :

char ch;
unsigned char c;
unsigned int n; /* ou tout simplement : unsigned n */

La plus petite valeur possible que l'on puisse affecter à une variable de type entier non signé est 0 alors que les entiers signés acceptent les valeurs négatives.
Devant int, on peut mettre également short ou long auxquels cas on obtiendrait un entier court (short int ou tout simplement short) respectivement un entier long (long int ou tout simplement long). Voici des exemples de déclarations valides :

int n = 10, m = 5;
short a, b, c;
long x, y, z = -1;
unsigned long p = 2;

long peut être également mis devant double, le type résultant est alors long double (quadruple précision).

Nombres flottants

Toute constante littérale « pure » de type flottant (ex : 0.5, -1.2, ...) est considérée comme étant de type double.
Le suffixe f ou F permet d'expliciter un float. Attention, 1f n'est pas valide car 1 est une constante entière. Par contre 1.0f est tout à fait correcte. Le suffixe l ou L permet d'expliciter un long double.
Une constante littérale de type flottant est constituée, dans cet ordre :

Par exemple, les constantes littérales suivantes représentent bien des nombres flottants : 1.0, -1.1f, 1.6E-19, 6.02e23L, 0.5 3e8

Caractères et chaînes de caractères

Les caractères sont placés entre simple quottes (ex : 'A', 'b', 'c', ...) et les chaînes de caractères entre double quottes (ex : "Bonjour", "Au revoir", ...). Certains caractères sont spéciaux et il faut utiliser la technique dite d'échappement pour les utiliser. En langage C, le caractère d'échappement est le caractère \. Exemples :

 

Caractère

Valeur

'\t'

Le caractère 'tabulation'

'\r'

Le caractère 'retour chariot'

'\n'

Le caractère 'fin de ligne'

'\\'

Le caractère 'antislash'

Spécification de format dans printf

Voici la liste des codes format que nous utiliserons les plus souvent par la suite :

Code format

Utilisation

c

Afficher un caractère

d

Afficher un int

u

Afficher un unsigned int

x, X

Afficher un entier dans le format hexadécimal

f

Afficher un float ou un double en notation décimale

e

Afficher un float ou un double en notation scientifique avec un petit e

E

Afficher un float ou un double en notation scientifique avec un grand E

g, G

Afficher un float ou un double (utilise le format le plus adapté)

%

Afficher le caractère '%'

De plus :

Il y a bien plus de possibilités (qu'il faut connaître !) que nous ne détaillerons pas hélas ici (mais nous utiliserons certaines d'entre elles le moment venu). N'hésitez donc surtout pas à consulter la doc.

Les variables et les constantes

Si vous avez déjà fait un peu de math dans votre vie, vous devriez connaître ce que c'est qu'une variable. La notion est pratiquement la même en programmation. La déclaration d'une variable en langage C, dans sa forme la plus simple, se fait de la manière suivante :

<type> variable;

Par exemple :

int n;

Voici d'autres exemples beaucoup plus généralistes :

int a, b, c;
int i = 0, j, n = 10;
double x, y, z = 0.5;

Une déclaration de variable de la forme :

int n = 0;

est appelée une déclaration avec initialisation. Ce n'est pas la même chose que :

int n;
n = 0;

qui est une déclaration suivie d'une instruction d'affectation. Pour vous en convaincre rapidement, une constante est une variable dont la particularité est d'être en lecture seule (la valeur d'une constante ne peut pas être modifiée). On obtient une constante en ajoutant le mot-clé const devant une déclaration. Par exemple :

const int n = 10;

On ne pourra jamais écrire :

n = <quoi que ce soit>;

Définition de nouveaux types

Le C dispose d'un mécanisme très puissant permettant au programmeur de créer de nouveaux types de données en utilisant le mot clé typedef. Par exemple :

typedef int ENTIER;

Définit le type ENTIER comme n'étant autre que le type int. Rien ne nous empêche donc désormais d'écrire par exemple :

ENTIER a, b;

Bien que dans ce cas, un simple #define aurait pu suffire, il est toujours recommandé d'utiliser typedef qui est beaucoup plus sûr.