Support de cours de Langage C types et variables

Support de cours de Langage C types et variables, tutoriel & guide de travaux pratiques en pdf.

Types et variables

Ce chapitre traite des définitions de variables. Dans tous les langages, une définition de variable a les rôles suivants :
1. définir le domaine de valeur de cette variable (taille en mémoire et représentation machine);
2. définir les opérations possibles sur cette variable;
3. définir le domaine de visibilité de cette variable;
4. permettre à l’environnement d’exécution du programme d’associer le nom de la variable à une adresse mémoire;
5. initialiser la variable avec une valeur compatible avec le domaine de valeur.
En langage C, une variable se caractérise à partir de son type et de sa classe mémoire. Les points précédents numéros 1 et 2 sont associés au type de la variable; les points 3 et 4 sont associés à la classe mémoire de la variable. L’initialisation est traitée dans la section3.7.
Types de base
Ce sont les types prédéfinis du compilateur. Ils sont au nombre de six :
void c’est le type vide. Il a été introduit par la norme ANSI. Il est surtout utilisé pour préciser les fonctions sans argument ou sans retour. Il joue un rôle particulier dans l’utilisation des pointeurs (voir chapitre 10).
int c’est le type entier. Ce type se décline avec des qualificatifs pour préciser sa taille (long ou short), et le fait qu’il soit uniquement positif (unsigned) ou positif et négatif (signed) 1. Le qualificatif signed est appliqué par défaut, ainsi il n’y a pas de différence entre une variable de type int et une variable de type signed int.
char ce type est très proche de l’octet. Il représente un entier sur huit bits. Sa valeur peut évoluer entre 128 et +127. Il est le support des caractères au sens commun du terme. Ces caractères sont représentés par la table ASCII. Comme le type int le type char peut être qualifié de manière à être signé ou non. La norme ANSI introduit un type permettant de supporter des alphabets comprenant plus de 255 signes, ce type est appelé wchar_t. Il est défini dans le fichier<stddef.h>.
float ce type sert pour les calculs avec des parties décimales.
double c’est un type qui permet de représenter des valeurs ayant une partie décimale avec une plus grande précision que le type float. Comme nous le verrons dans l’expression des constantes (sec. 3.2.2) et dans les calculs(sec. 3.8), ce type est le plus courant pour représenter des valeurs avec parties décimales.
Dans le cas le plus courant une variable du type entier peut contenir une valeur positive ou négative long double ce type est récent, il permet de représenter des nombres avec parties décimales qui nécessitent une très grande précision.
Types entiers
Les mots short et long peuvent être utilisés seuls ou avec le mot int, donnant la possibilité d’avoir des définitions du type : short int ou long int. Ces définitions peuvent aussi s’écrire de manière abrégée : short ou long.
Le langage C considère les types char, short int, int et long int, comme des types entiers et permet de les mélanger lors des calculs (5.3).
A priori, les types entiers sont signés, c’est-à-dire qu’ils peuvent contenir des valeurs positives ou négatives. Par exemple, la valeur d’une variable du type char peut évoluer entre -128 et +127.
Les types entiers peuvent être qualifiés à l’aide du mot unsigned qui force les variables de ce type à être considérées comme uniquement positives. Par exemple, la valeur d’une variable du type unsigned char ne peut évoluer qu’entre 0 et 255.
Le qualificatif signed permet d’insister sur le fait que la variable peut prendre des valeurs positives ou négatives. Il fait pendant au qualificatif unsigned comme l’opérateur “+” unaire fait pendant à l’opérateur “-” unaire.
Types avec parties décimales
Comme nous l’avons déjà dit, les types avec parties décimales sont au nombre de trois :
float ce type sert pour les calculs avec des parties décimales. Il est souvent représenté selon la norme ISO/IEEE 754.
double ce type de plus grande précision permet de représenter des valeurs avec parties décimales. Lui aussi est souvent basé sur la norme ISO/IEEE 754.
long double ce type est récent et permet de représenter des nombres avec parties décimales sur une très grande précision, si la machine le permet.
Tailles des types
L’espace qu’occupent les différents types en mémoire dépend de la machine sur laquelle est implanté le compilateur. Le choix est laissé aux concepteurs des compilateurs. Les seules contraintes sont des inégalités non strictes, à savoir : – sizeof(short)≤ sizeof(int)≤ sizeof(long) – sizeof(float)≤ sizeof(double)≤ sizeof(longdouble) où sizeof est un opérateur qui donne la taille en nombre d’octets du type dont le nom est entre parenthèses.
La taille de l’entier est le plus souvent la taille des registres internes de la machine, c’est par exemple seize bits sur une machine de type ordinateur personnel2 et trente-deux bits sur les machines du type station de travail.
La taille des variables ayant une partie décimale est le plus souvent cadrée sur la norme ISO/IEEE 754. Les machines supportant un type long double différent du type double sont assez rares.

……..

Cours gratuitTélécharger le cours complet

Télécharger aussi :

Laisser un commentaire

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