Programmer en langage C
Table des matières
VI
© Éditions Eyrolles
4
Les types caractères . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
4.1 La notion de caractère en langage C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
4.2 Notation des constantes caractères . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
5
Initialisation et constantes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
3 Les opérateurs et les expressions en langage C . . . . . . . . . . . . . . . . . . . . . . . . 25
1
L’originalité des notions d’opérateur et d’expression en langage C . . . . . . . . . . 25
2
Les opérateurs arithmétiques en C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
2.1 Présentation des opérateurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
2.2 Les priorités relatives des opérateurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
3
Les conversions implicites pouvant intervenir dans un calcul d’expression . . 29
3.1 Notion d’expression mixte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
3.2 Les conversions d’ajustement de type . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
3.3 Les promotions numériques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
3.4 Le cas du type char . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
4
Les opérateurs relationnels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
5
Les opérateurs logiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
6
L’opérateur d’affectation ordinaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
6.1 Notion de lvalue . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
6.2 L’opérateur d’affectation possède une associativité de droite à gauche . . . . . . . 38
6.3 L’affectation peut entraîner une conversion . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
7
Les opérateurs d’incrémentation et de décrémentation . . . . . . . . . . . . . . . . . . . . 39
7.1 Leur rôle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
7.2 Leurs priorités . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
7.3 Leur intérêt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
8
Les opérateurs d’affectation élargie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
9
Les conversions forcées par une affectation . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
10 L’opérateur de cast . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
11 L’opérateur conditionnel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
12 L’opérateur séquentiel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
13 L’opérateur sizeof . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
14 Récapitulatif des priorités de tous les opérateurs . . . . . . . . . . . . . . . . . . . . . . . . 48
Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
4 Les entrées-sorties conversationnelles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
1
Les possibilités de la fonction printf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
1.1 Les principaux codes de conversion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
1.2 Action sur le gabarit d’affichage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
1.3 Actions sur la précision . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
1.4 La syntaxe de printf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
1.5 En cas d’erreur de programmation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
1.6 La macro putchar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
Delannoy Livre.book Page VI Mercredi, 6. mai 2009 4:25 16
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
6
Autres types introduits par la norme C99
Table des matières
VI
© Éditions Eyrolles
4
Les types caractères . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
4.1 La notion de caractère en langage C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
4.2 Notation des constantes caractères . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
5
Initialisation et constantes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
3 Les opérateurs et les expressions en langage C . . . . . . . . . . . . . . . . . . . . . . . . 25
1
L’originalité des notions d’opérateur et d’expression en langage C . . . . . . . . . . 25
2
Les opérateurs arithmétiques en C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
2.1 Présentation des opérateurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
2.2 Les priorités relatives des opérateurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
3
Les conversions implicites pouvant intervenir dans un calcul d’expression . . 29
3.1 Notion d’expression mixte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
3.2 Les conversions d’ajustement de type . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
3.3 Les promotions numériques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
3.4 Le cas du type char . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
4
Les opérateurs relationnels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
5
Les opérateurs logiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
6
L’opérateur d’affectation ordinaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
6.1 Notion de lvalue . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
6.2 L’opérateur d’affectation possède une associativité de droite à gauche . . . . . . . 38
6.3 L’affectation peut entraîner une conversion . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
7
Les opérateurs d’incrémentation et de décrémentation . . . . . . . . . . . . . . . . . . . . 39
7.1 Leur rôle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
7.2 Leurs priorités . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
7.3 Leur intérêt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
8
Les opérateurs d’affectation élargie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
9
Les conversions forcées par une affectation . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
10 L’opérateur de cast . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
11 L’opérateur conditionnel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
12 L’opérateur séquentiel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
13 L’opérateur sizeof . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
14 Récapitulatif des priorités de tous les opérateurs . . . . . . . . . . . . . . . . . . . . . . . . 48
Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
4 Les entrées-sorties conversationnelles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
1
Les possibilités de la fonction printf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
1.1 Les principaux codes de conversion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
1.2 Action sur le gabarit d’affichage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
1.3 Actions sur la précision . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
1.4 La syntaxe de printf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
1.5 En cas d’erreur de programmation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
1.6 La macro putchar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
Delannoy Livre.book Page VI Mercredi, 6. mai 2009 4:25 16
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
6
Autres types introduits par la norme C99
