Support de Cours de Langage C
Christian Bac
15 février 2013
ii
Table des matières
Avant-propos xi
1 Historique et présentation 1
1.1 Historique . . . 1
1.2 Présentation du langage . . . 2
1.3 Idées fondamentales . . . 3
1.4 Enchaîneur de passes . . . 5
1.4.1 Pré-processeur . . . 6
1.4.2 Compilateur . . . 6
1.4.3 Optimiseur de code . . . 6
1.4.4 Assembleur . . . 6
1.4.5 Éditeur de liens . . . 6
1.4.6 Quelques options de cc . . . 6
2 Généralités sur la syntaxe 9 2.1 Mise en page . . . 9
2.1.1 Identifiant . . . 9
2.1.2 Espaces lexicaux . . . 9
2.2 Mots réservés . . . 10
2.3 Constantes . . . 10
2.4 Instructions . . . 10
3 Types et variables 11 3.1 Types de base . . . 11
3.1.1 Types entiers . . . 12
3.1.2 Types avec parties décimales . . . 12
3.1.3 Tailles des types . . . 12
3.2 Constantes associées aux types de base . . . 13
3.2.1 Constantes de type entier . . . 13
3.2.2 Constantes avec partie décimale . . . 14
3.2.3 Constantes de type caractère . . . 14 Christian Bac 1985-2013c
iv TABLE DES MATIÈRES
3.2.4 Chaînes de caractères . . . 15
3.3 Qualificatifs . . . 15
3.4 Taille et normalisation . . . 15
3.5 Définition de variables . . . 16
3.6 Types dérivés des types de base . . . 17
3.6.1 Tableaux et structures . . . 17
3.6.2 Pointeurs . . . 18
3.7 Initialisation de variables . . . 19
3.8 Conversion de type . . . 19
3.8.1 Conversions implicites . . . 21
3.9 Déclaration et définition . . . 22
3.10 Exercices sur les types et variables . . . 22
3.10.1 Exercice 1 . . . 22
3.10.2 Exercice 2 . . . 22
3.10.3 Exercice 3 . . . 23
3.10.4 Exercice 4 . . . 23
4 Éléments de base 27 4.1 Bonjour . . . 27
4.2 Lire et écrire . . . 28
4.3 Quelques opérations . . . 29
4.4 Plus surprintf()etscanf() . . . 29
4.5 Exercices surprintf()etscanf() . . . 31
4.5.1 Exercice 1 . . . 31
4.5.2 Exercice 2 . . . 31
4.5.3 Exercice 3 . . . 31
4.5.4 Exercice 4 . . . 32
5 Opérateurs et expressions 37 5.1 Opérateurs un-aires . . . 37
5.1.1 Opérateur de référencement . . . 38
5.1.2 Opérateur de déréférencement ou indirection . . . 38
5.1.3 Utilisation des & et * . . . 38
5.1.4 Opérateurs d’incrémentation et de décrémentation . . . 39
5.1.5 Opérateur de taille . . . 40
5.1.6 Opérateur de négation logique . . . 40
5.1.7 Plus et moins unaires . . . 40
5.1.8 Complément à un . . . 40
5.2 Opérateurs binaires . . . 40
5.2.1 Opérateurs arithmétiques . . . 41
TABLE DES MATIÈRES v
5.2.2 Opérateurs manipulant les bits . . . 41
5.2.3 Opérateurs de décalage . . . 43
5.2.4 Opérateurs de relation . . . 43
5.2.5 Opérateur binaire d’affectation et de succession . . . 44
5.2.6 Opérateurs d’affectation . . . 44
5.2.7 Opérateur ternaire . . . 45
5.2.8 Précédence des opérateurs . . . 46
5.3 Expressions . . . 47
5.4 Instructions . . . 47
5.5 Exercices sur les opérateurs et les expressions . . . 48
5.5.1 Exercice 1 . . . 48
5.5.2 Exercice 2 . . . 48
5.5.3 Exercice 3 . . . 48
5.5.4 Exercice 4 . . . 48
5.5.5 Exercice 5 : Operateur ternaire . . . 49
5.5.6 Exercice 6 . . . 49
6 Instructions de contrôle 57 6.1 Instructions conditionnelles . . . 57
6.1.1 Test . . . 57
6.1.2 Table de branchement . . . 58
6.2 Instructions itératives . . . 60
6.2.1 while . . . 60
6.2.2 for . . . 61
6.2.3 do while . . . 62
6.2.4 Remarques sur les instructions itératives . . . 63
6.3 Ruptures de séquence . . . 63
6.3.1 continue . . . 63
6.3.2 break . . . 63
6.3.3 goto . . . 64
6.3.4 return . . . 65
6.4 Exercices sur les instructions de contrôle . . . 66
6.4.1 Exercice 1 . . . 66
6.4.2 Exercice 2 . . . 66
6.4.3 Exercice 3 . . . 66
6.4.4 Exercice 4 . . . 66
6.5 Exercices sur les ruptures de séquence . . . 66
6.5.1 Exercice 5 . . . 66
6.5.2 Exercice 6 . . . 66 Christian Bac 1985-2013c