Departement Mathematiques et Informatique
LE LANGAGE C
A. DANCEL
Envoyez SVP vos commentaires et corrections a :
dancel@eis.enac.dgac.fr
1 Generalites 9
1.1 Historique
: : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :9 1.2 Caracteristiques
: : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :9 1.3 Forme generale d'un programme C
: : : : : : : : : : : : : : : : : : : : : : : : : : :10 1.3.1 Structure d'un programme C
: : : : : : : : : : : : : : : : : : : : : : : : : :10 1.3.2 Structure d'une fonction
: : : : : : : : : : : : : : : : : : : : : : : : : : : : :10 1.3.3 Structure d'un bloc
: : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :11 1.3.4 Structure d'une instruction elementaire
: : : : : : : : : : : : : : : : : : : :11 1.4 Regles d'ecriture des programmes C
: : : : : : : : : : : : : : : : : : : : : : : : : :11
2 Constantes, variables et typ es de base 15
2.1 Identicateurs
: : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :15 2.2 Types de base
: : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :16 2.2.1 Caractere
: : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :16 2.2.2 Entier
: : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :16 2.2.3 Les reels
: : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :17 2.2.4 Les dierents types sous HP C.
: : : : : : : : : : : : : : : : : : : : : : : : :17 2.3 Les constantes
: : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :17 2.3.1 Constantes entieres
: : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :17 2.3.2 Constantes reelles
: : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :18 2.3.3 Constantes caracteres
: : : : : : : : : : : : : : : : : : : : : : : : : : : : : :18 2.3.4 Constantes cha^nes de caracteres
: : : : : : : : : : : : : : : : : : : : : : : :19 2.4 Denition d'une variable simple
: : : : : : : : : : : : : : : : : : : : : : : : : : : : :20 2.5 Denition d'une variable tableau
: : : : : : : : : : : : : : : : : : : : : : : : : : : :20 2.6 Classes de stockage et modicateurs
: : : : : : : : : : : : : : : : : : : : : : : : : :21 2.6.1 Classe de stockage d'une variable
: : : : : : : : : : : : : : : : : : : : : : : :21 2.6.2 Modicateurs de type
: : : : : : : : : : : : : : : : : : : : : : : : : : : : : :23 2.7 Initialisation des variables
: : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :24 2.7.1 Initialisation explicite
: : : : : : : : : : : : : : : : : : : : : : : : : : : : : :24 2.7.2 Initialisation implicite
: : : : : : : : : : : : : : : : : : : : : : : : : : : : : :24
3 Les expressions C 25
3.1 Generalites
: : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :25
3.2 Les operateurs arithmetiques
: : : : : : : : : : : : : : : : : : : : : : : : : : : : : :25
3.3 Operateurs de manipulation de bits
: : : : : : : : : : : : : : : : : : : : : : : : : : :26
3.4 Les operateurs d'aectation
: : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :28
3.4.1 Valeur a gauche (lvalue)
: : : : : : : : : : : : : : : : : : : : : : : : : : : : :28
3.4.2 L'operateur d'aectation
: : : : : : : : : : : : : : : : : : : : : : : : : : : : :28
3.4.3 Aectation combinee
: : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :28
3.5 Incrementation/decrementation
: : : : : : : : : : : : : : : : : : : : : : : : : : : : :29 3.5.1 Pre-incrementation/pre-decrementation
: : : : : : : : : : : : : : : : : : : :29 3.5.2 Post-incrementation/post-decrementation
: : : : : : : : : : : : : : : : : : :29 3.6 L'operateur de taille
: : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :29 3.7 L'operateur de sequence
: : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :30 3.8 Conversions
: : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :30 3.8.1 Conversions implicites
: : : : : : : : : : : : : : : : : : : : : : : : : : : : : :30 3.8.2 Conversions explicites (casting)
: : : : : : : : : : : : : : : : : : : : : : : : :32 3.9 Operateurs relationnels
: : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :32 3.10 Les expressions booleennes
: : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :33 3.10.1 Generalites
: : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :33 3.10.2 Operateurs booleens
: : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :33 3.11 L'operateur conditionnel
: : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :34 3.12 Analyse lexicale
: : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :34 3.13 Priorite et associativite des operateurs
: : : : : : : : : : : : : : : : : : : : : : : : :34
4 Les structures de contr^ole 37
4.1 L'instruction
if: : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :37 4.2 L'instruction
while: : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :38 4.3 L'instruction
do...
while : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :39 4.4 L'instruction
for : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :40 4.5 L'instruction
switch : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :41 4.6 L'instruction
break: : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :42 4.7 L'instruction
continue: : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :42
5 Les p ointeurs 45
5.1 Denition d'une variable pointeur
: : : : : : : : : : : : : : : : : : : : : : : : : : : :45 5.2 Operateur d'adresse
: : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :46 5.3 Operateur d'indirection
: : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :46 5.4 La constante
NULL : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :46 5.5 Arithmetique des pointeurs
: : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :47 5.5.1 Incrementation/decrementation de pointeur
: : : : : : : : : : : : : : : : : :47 5.5.2 Addition/soustraction de 2 pointeurs
: : : : : : : : : : : : : : : : : : : : : :47 5.5.3 Comparaison de pointeurs
: : : : : : : : : : : : : : : : : : : : : : : : : : : :47 5.5.4 Aectation de pointeurs
: : : : : : : : : : : : : : : : : : : : : : : : : : : : :47 5.6
constet les pointeurs
: : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :48 5.7 Pointeurs et tableaux
: : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :48 5.8 Les tableaux et les cha^nes
: : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :49 5.9 L'operateur d'adresse : explication complementaire
: : : : : : : : : : : : : : : : : :50 5.10 Tableau de pointeurs
: : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :52 5.11 Ce programme ache
CCCCCCCC: : : : : : : : : : : : : : : : : : : : : : : : : : : : :53
6 Achages et saisies 55