INTRODUCTION        AU LANGAGE                 C                                                                char rahc ...
Bernard CassagneIntroduction au langage C          norme iso ansi             Laboratoire clips     Universit Joseph Fouri...
Copyright 1997-1998 Bernard CassagneCe texte est copyright et nest pas dans le domaine public. Sa reproduction est cependa...
Si ce document est reproduit pour les besoins personnels du reproducteur, toute      forme de reproduction totale ou parti...
de tierces personnes :                                                                ea           il devra etre reproduit...
Table des mati
res              e1 Les bases                                                                                             ...
que standard . . . . . . . .                              e                                 .   .   .   .   .   .   .   . ...
res . . . . . . . . . . . . . .                            e                                   .   .   .   .   .   .   .  ...
res . . . . . . . . . . . . . . .                           e                                    .   .   .   .   .   .   ....
res . . . . . . . . . .                                     e                          .   .   .   .   .   .   .   .   .  ...
res . . . . . . . .                                       e                        .   .   .   .   .   .   .   .   .   .  ...
res littrales . . . . . . .                                e       e                       .   .   .   .   .   .   .   .  ...
1.15.1 D nition dune fonction . . . . . . . . . . . . . . . . . . .                  e                                    ...
une fonction externe . . . . . . . . . . . . . . .                  ee       a                                            ...
que standard .                                                                  e                   .   .   .   .   .   26...
un lment dun tableau . . . . . . . . . . . . . . .               ee        a ee                                           ...
res . . . . . . . . . . . . . . . . .                                              e                                      ...
3.9 Exercice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .                                  .   . ...
tres . . . . . . . . . . . . . . . . . . . . . . . . . . .                         e                                      ...
re prcision . . . . . . . . . . . . . . . . . . . . . . . . . . .                 e     e                                 ...
res instructions . . . . . . . . . . . . . . . . . . . . . . . . .                e                                       ...
tre . . . . . . . . . . . . . . . . . . . . . . .                                        e                                ...
tre . . . . . . . .                           ee                            e            e                                ...
tre                                            ee                            e            e                               ...
s aux lments . . . . . . . . . . . . . . . . . . . . . . . . . . .                      e     ee                          ...
tre . . . . . . . . . . . . . . . . . . . . . . . . .                                    e                                ...
tres dun programme . . . . . . . . . . . . . . . . . . . . .                        e                                     ...
re sur chier                 e                  e                     .   .   .   .   .   .   .   .   .   .   .   .   .   ...
re : fgetc . . . . .                               e                          .   .   .   .   .   .   .   .   .   .   .   ...
5.3.2 lecture par caract
re : getc . . . . . . . . . . .                                   e                                   .   .   .   .   .   ...
re : getchar . . . . . . . . .                                   e                                   .   .   .   .   .   ....
re : fputc . . . . . . . . . .               e                    e                                  .   .   .   .   .   ....
re : putc . . . . . . . . . . .               e                    e                                  .   .   .   .   .   ...
re : putchar . . . . . . . . .               e                    e                                  .   .   .   .   .   ....
s aux membres des structures . . . . . . . . . . . . . . . . . .                  e                                       ...
s aux lments dune structure pointe . . . . . . . . . . . . . . . . .            e     ee                                e ...
tre . . . . . . . . . . . . . . . . . . . . . .                                         e                                 ...
. 109       6.10.1 Retour sur la conversion des tableaux . . . . . . . . . . . . . . . .                                . ...
s aux membres de lunion . . . . . . . . . . . . . . . . . . . . . . . . .            e                                    ...
6.17 Utilisation pratique des unions . . . . . . . . . . . . . . . . . . . . . . . . . 116  6.18 Une mthode pour allger lacc
s aux membres . . . . . . . . . . . . . . . . 117              e              e        e7 Les expressions                 ...
bit . . . . . . . . . .                e                 a                                      .   .   .   .   .   .   . ...
bit . . . . . . . . . . .                e              a                                         .   .   .   .   .   .   ...
bit . . . . . . . . . . .                e               a                                        .   .   .   .   .   .   ...
bit . . . . . . .                e                        a                               .   .   .   .   .   .   .   .   ...
gauche . . . . . . .                e         e        a                                     .   .   .   .   .   .   .   ....
droite . . . . . . . .                e         e        a                                     .   .   .   .   .   .   .  ...
tres . . .                                       e             .   .   .   .   .   .   .   .   .   .   .   .   .   .   .  ...
tres . . .                                       e             .   .   .   .   .   .   .   .   .   .   .   .   .   .   .  ...
ges des macros . . . . . .                    e                                .   .   .   .   .   .   .   .   .   .   .  ...
9 Les dclarations       e                                                                                                 ...
me . . . . . . . . . . . . . . . .                                 e                                            .   .   . ...
me . . . . . . . . . . . . . . . .                                 e                                            .   .   . ...
tres . . . . . . . .
e                              .   .   .   .   .   .   .   .   .   .   . 156       9.11.1 Exemple 1 . . . . . . . . . . . ...
que standard              e                                                                                               ...
res ctype.h . . . . . . . .                                 e                                    .   .   .   .   .   .   ....
tres stdarg.h . . . . .                                     e                                .   .   .   .   .   .   .   ....
s aux chiers . . . . . . . . . . . . . . . .                    e                                                 .   .   ...
10.8.4 Entres-sorties caract
res . . . . . . . . .                    e                e                                        .   .   .   .   .   .  ...
res multi-octets . . . .                                 e                                            .   .   .   .   .   ...
res                    e                                                                                                  ...
E Un bestiaire de types                                                                                                   ...
tres . . .                                             e                         .   .   .   .   .   .   .   .   .   .   ....
Avant-proposAu sujet de lauteur     Je suis ingnieur au cnrs et je travaille dans un laboratoire de recherche de luniver- ...
le-mail                                    e                                             aBernard.Cassagne@imag.fr.Au suje...
deux styles dcriture de manuels : le style           e                                 ea                  e manuel de rfr...
la fois rigoureux                                                                              aet didactique. Pour sen pe...
une personne sachant programmer, dacqurir les lments fondamentaux du langage C.                                           ...
etre exhaustif. Il comporte de nombreux exemples, ainsi que des exercices dont la    asolution se trouve dans le corps du ...
s avoir programm sa solution                                                              e                     epersonnel...
sy reporter.                    eaUn mot sur les probl
mes de traduction                    e   Le document de rfrence concernant le langage C est la norme ansi d nissant le    ...
mes de                               e                                                    etraduction : comment traduire l...
re
ne pas drouter les lecteurs franais, je me suis impos de respecter les choix de     e a          e                        ...
traduction dun grand diteur 1 de livres techniques, meme quand je nai pas trouv ces                         e             ...
s heureux. Jai donc utilis dclarateur, initialisateur et spci cateur bien que me        e                             e e ...
gles de grammaires qui sont donnes dans le corps de ce manuel sont simpli es         e                                    ...
la grammaire o cielle du langage. Cependant, le                                         alecteur trouvera
lannexe D la grammaire sous une forme exhaustive et conforme
la                   a                                                                   anorme ansi. La typographie des r
gles suit les conventions suivantes :                                     e   1. les lments terminaux du langage seront cr...
largeur constante,          ee                                     e                      a      comme ceci : while.   2. ...
gles de grammaires seront crites de la mani
re suivante :           e                            e                e            les parties gauches de r
gles seront seules sur leur ligne, cadres
gauche et                                      e                                     e a            suivies du signe deux ...
res possibles de driver le non-terminal ins-                                             e                    e           ...
re r
gle indique quon peut le driver en :                              e e                                e           if  expre...
me r
gle indique quon peut aussi le driver en :                   e e                                       e           if  exp...
gle pourra etre crite sur plusieurs lignes. Ceci permettra                                 e                e           de...
re possible de mettre en page le fragment de programme               ee               e           C correspondant, de faon
obtenir une bonne lisibilit.                                   c a                               e           Sans en chang...
les lments optionnels dune r
gle seront indiqus en mettant le mot  option               ee                         e                 e          en ital...
droite de llment concern.                                                      a             ee              e          Pa...
gle :                            e          dclarateur-init :           e                  dclarateur initialisateur optio...
amliorer le manuscrit original en me signalant                                       ea ede nombreuses erreurs et en me pr...
rement Damien  e                                                                        eGenthial, Fabienne Lagnier, Xavie...
Chapitre 1Les bases    Le but de ce chapitre est de prsenter les lments de base du langage C, sous leur forme             ...
re fois par deux chercheurs des Laboratoires Bell, B. Kernighan et D.ee e                 eRitchie, dans un livre intitul ...
lextraordinaire succ
s dunix, qui induisit le succ
s du langage C, la situation          a                      e                              edevint confuse : plusieurs fo...
lateurs non conformes
KR car comportant des extensions particuli
res. A la n des                         aannes 80, il devint ncessaire de mettre de lordre dans ce chaos et donc de normal...
laquelle sattela lansi 1, organisme de normalisation amricain. La              a a                                        ...
lappeler ansi c, presque? tout le monde fait de meme. Dans ce manuel,            anous suivrons lusage gnral, et utilisero...
lansi et liso.           a    Ce document dcrit C ansi, avec parfois des rfrences
C KR, de mani
re
per-                    e                               ee         a                    e amettre au lecteur de comprendre...
que standard                       e   Le langage C a t conu pour lcriture de syst
mes, en particulier le syst
me unix.                    ee c             e               e                           ePour cette raison, ses concepteu...
algorithmique dclarations, instructions, etc. et tout ce qui est interaction avec le sys-                   et
me entres sorties, allocation de mmoire, etc. qui est ralis par appel de fonctions e          e                          e...
que dite biblioth
que standard. Cette coupure se retrouve                               e                 edans la norme qui est compose ess...
que  .                      e     Ce manuel se donne comme objectif de donner une vue densemble du langage, mais pasde la ...
que standard. De la biblioth
que standard ne seront prsentes de mani
re               e                            e                           e e              ecompl
te que les fonctions permettant de raliser les entres-sorties et la gestion mmoire.       e                               ...
que, classs par type                                                                      e           edutilisation, est d...
res                      e    Le lecteur non familiaris avec les probl
mes de codage de caract
res peut se reporter                             e               e                         ea
lannexe A, o
ces probl
mes sont dvelopps.                 u         e            e      e    Le langage C nimpose pas un jeu de caract
res particulier. Par contre tout le langage                                                 emots-cls, oprateurs, etc. est...
res ascii. Meme les identi -         e e                       e                           ecateurs doivent etre crits ave...
res utilis                      e                                                          e          epour les constantes...
re, les chanes de caract
res et les commentaires est dpendant                           e                         e                             ede...
s longtemps les programmeurs non anglophones ont utilis lascii faute de                e                                  ...
me pour disposer dun environnement de travail la fenetre, le shell,                     elditeur, le compilateur enti
rement
la norme iso-8859. Dans ce manuel, on suppose  e                             e        aque le lecteur dispose dun tel envi...
1.5.1 Les mots-cls                 e    Le langage C est un langage
mots-cls, ce qui signi e quun certain nombre de                                    a        emots sont rservs pour le lang...
une variable enti
re.                        a                 e1.5.2 Les identi cateurs    Le but dun identi cateur est de donner un nom
une entit du programme variable,                                                       a          eprocdure, etc. Les iden...
re ne peut pas etre un chi re. Les lettres formant         e                              eles identi cateurs peuvent etre...
un diteur de liens au del
dune certaine longueur. Cette limite dpend de        e a e                            a                                   ...
31 caract
res.       e                                     e       a          e    De la meme mani
re, les identi cateurs externes exports
un diteur de liens pour-                       e                                      e a eront etre tronqus au del
dune certaine longueur. Cette limite est gnralement plus                  e         a                                     ...
re, mais ne peut etre infrieure
6 caract
res. De surcrot, la distinction entre minus- ee                            e      a          ecules et majuscules nest pas...
Recommandations :   Dans le domaine gnral de la programmation, pas seulement le langage C, il est                        e...
tres et la raison detre de la procdure ;            e                                e                                 e  ...
ces de car-                            e                   e           e              e   touches permettant de dcouper vi...
*     If nothing above worked, then we get desperate. We attempt to        *     open the stupid font at one of a small se...
la n du                                       e                                         a       prochain commentaire et ce...
des commen-                                                                       ea       taires 5.   4. Dans 5 , Peter V...
zro. La simple correction du bug, t gagner 15 de cacit au compilateur !                    e a e                          ...
1.7 Les types de base1.7.1 Les caract
res                e    Le mot-cl dsignant les caract
res est char. Un objet de ce type doit pouvoir contenir             e e                   ele code de nimporte quel caract
re de lensemble des caract
res utilis sur la machine.                                  e                             e        eLe codage des caract
res nest pas d ni par le langage : cest un choix dimplmentation.                     e               e                    ...
re est original par rapport
ce qui se fait habituellement dans les                   e                           alangages de programmation. La norme ...
re                                           e                                          epeut etre utilis dans toute expre...
un objet de type entier peut etre utilis. Par                e                         u                                  ...
re                                                e                                     esuivant dans le code utilis sur l...
s gnralement en reprsentation en complment
2, bien que cela                e e ee                         e                   e       ane soit pas impos par le langa...
trois prcisions possibles. En allant                                                     a        ede la prcision la plus ...
1.8 Les constantes1.8.1 Les constantes enti
res                         e     Syntaxe :     On dispose de 3 notations pour les constantes enti
res : dcimale, octale et hexad-                                                       e       e                       e   ...
re usuelle ex : 372. Les constantes                      e          e                    e     octales doivent commencer p...
9, ainsi que des lettres de a
f sous leur forme majuscule             e                  a                               a     ou minuscule ex : 0x5a2b,...
re peut etre su xe par la lettre u ou U pour indiquer quelle                         e                   e     doit etre i...
re est le premier type, choisi dans une liste de types,                                 e     permettant de reprsenter la ...
10.                               ee                      e a1.8.2 Les constantes caract
res                           e     Syntaxe :     Une constante caract
re scrit entoure du signe . La r
gle gnrale consiste
crire                           e e             e                  e ee                   ae     le caract
re entour du signe  ; par exemple, la constante caract
re correspondant              e         e                                                e     au caract
re g scrit g.               e      e                                            11                     http://krimo666.myl...
Introduction Langage C
Introduction Langage C
Introduction Langage C
Introduction Langage C
Introduction Langage C
Introduction Langage C
Introduction Langage C
Introduction Langage C
Introduction Langage C
Introduction Langage C
Introduction Langage C
Introduction Langage C
Introduction Langage C
Introduction Langage C
Introduction Langage C
Introduction Langage C
Introduction Langage C
Introduction Langage C
Introduction Langage C
Introduction Langage C
Introduction Langage C
Introduction Langage C
Introduction Langage C
Introduction Langage C
Introduction Langage C
Introduction Langage C
Introduction Langage C
Introduction Langage C
Introduction Langage C
Introduction Langage C
Introduction Langage C
Introduction Langage C
Introduction Langage C
Introduction Langage C
Introduction Langage C
Introduction Langage C
Introduction Langage C
Introduction Langage C
Introduction Langage C
Introduction Langage C
Introduction Langage C
Introduction Langage C
Introduction Langage C
Introduction Langage C
Introduction Langage C
Introduction Langage C
Introduction Langage C
Introduction Langage C
Introduction Langage C
Introduction Langage C
Introduction Langage C
Introduction Langage C
Introduction Langage C
Introduction Langage C
Introduction Langage C
Introduction Langage C
Introduction Langage C
Introduction Langage C
Introduction Langage C
Introduction Langage C
Introduction Langage C
Introduction Langage C
Introduction Langage C
Introduction Langage C
Introduction Langage C
Introduction Langage C
Introduction Langage C
Introduction Langage C
Introduction Langage C
Introduction Langage C
Introduction Langage C
Introduction Langage C
Introduction Langage C
Introduction Langage C
Introduction Langage C
Introduction Langage C
Introduction Langage C
Introduction Langage C
Introduction Langage C
Introduction Langage C
Introduction Langage C
Introduction Langage C
Introduction Langage C
Introduction Langage C
Introduction Langage C
Introduction Langage C
Introduction Langage C
Introduction Langage C
Introduction Langage C
Introduction Langage C
Introduction Langage C
Introduction Langage C
Introduction Langage C
Introduction Langage C
Introduction Langage C
Introduction Langage C
Introduction Langage C
Introduction Langage C
Introduction Langage C
Introduction Langage C
Introduction Langage C
Introduction Langage C
Introduction Langage C
Introduction Langage C
Introduction Langage C
Introduction Langage C
Introduction Langage C
Introduction Langage C
Introduction Langage C
Introduction Langage C
Introduction Langage C
Introduction Langage C
Introduction Langage C
Introduction Langage C
Introduction Langage C
Introduction Langage C
Introduction Langage C
Introduction Langage C
Introduction Langage C
Introduction Langage C
Introduction Langage C
Introduction Langage C
Introduction Langage C
Introduction Langage C
Introduction Langage C
Introduction Langage C
Introduction Langage C
Introduction Langage C
Introduction Langage C
Introduction Langage C
Introduction Langage C
Introduction Langage C
Introduction Langage C
Introduction Langage C
Introduction Langage C
Introduction Langage C
Introduction Langage C
Introduction Langage C
Introduction Langage C
Introduction Langage C
Prochain SlideShare
Chargement dans…5
×

Introduction Langage C

1 159 vues

Publié le

Introduction Langage C

Publié dans : Formation
1 commentaire
2 j’aime
Statistiques
Remarques
Aucun téléchargement
Vues
Nombre de vues
1 159
Sur SlideShare
0
Issues des intégrations
0
Intégrations
1
Actions
Partages
0
Téléchargements
92
Commentaires
1
J’aime
2
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Introduction Langage C

  1. 1. INTRODUCTION AU LANGAGE C char rahc [ ] = "n/" , redivider [ ] = "Able was I ere I saw elbA" , C * deliver,reviled = 1+1 , niam ; main ( ) {/*} */ int tni = 0x0 , rahctup,putchar ( ) ,LACEDx0 = 0xDECAL, rof ; for (;(int) (tni);) (int) (tni) = reviled ; deliver = redivider ; for ((int)(tni)++,++reviled;reviled* *deliver;deliver++,++(int)(tni)) rof = (int) -1- (tni) ;reviled--;--deliver; (tni) = (int) - 0xDECAL + LACEDx0 - rof ; for (reviled--,(int)--(tni);(int) (tni);(int)--(tni),--deliver) rahctup = putchar (reviled* *deliver) ; rahctup * putchar ((char) * (rahc)) ; /* {*/}Bernard Cassagne http://krimo666.mylivepage.com/
  2. 2. Bernard CassagneIntroduction au langage C norme iso ansi Laboratoire clips Universit Joseph Fourier & cnrs e Grenoble http://krimo666.mylivepage.com/
  3. 3. Copyright 1997-1998 Bernard CassagneCe texte est copyright et nest pas dans le domaine public. Sa reproduction est cependant eautorise a condition de respecter les conditions suivantes : e
  4. 4. Si ce document est reproduit pour les besoins personnels du reproducteur, toute forme de reproduction totale ou partielle est autorise. e Si ce document est reproduit dans le but detre distribu
  5. 5. de tierces personnes : ea il devra etre reproduit dans son intgralit sans aucune modi cation. Cette e e notice de copyright devra donc etre prsente. e il ne devra pas etre vendu. Cependant, dans le seul cas dun enseignement gratuit, une participation aux frais de reproduction pourra etre demande, mais e elle ne pourra etre suprieure au prix du papier et de lencre composant le e document.Toute reproduction sortant du cadre prcis ci-dessus est interdite sans accord pralable e e ede lauteur. Un chier PostScript contenant ce document est librement accessible par lurl :ftp: ftp.imag.fr pub DOC.UNIX C Introduction ANSI C.psVersion de ce document : 2.1 de juin 1998 http://krimo666.mylivepage.com/
  6. 6. Table des mati
  7. 7. res e1 Les bases 5 1.1 Les versions du langage C . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 1.2 Langage et biblioth
  8. 8. que standard . . . . . . . . e . . . . . . . . . . . . . . . . 5 1.3 Les phases de compilation . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 1.4 Les jeux de caract
  9. 9. res . . . . . . . . . . . . . . e . . . . . . . . . . . . . . . . 6 1.5 Les units lexicales . . . . . . . . . . . . . . . . e . . . . . . . . . . . . . . . . 6 1.5.1 Les mots-cls . . . . . . . . . . . . . . . e . . . . . . . . . . . . . . . . 7 1.5.2 Les identi cateurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 1.6 Les commentaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 1.7 Les types de base . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 1.7.1 Les caract
  10. 10. res . . . . . . . . . . . . . . . e . . . . . . . . . . . . . . . . 10 1.7.2 Les entiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 1.7.3 Les ottants . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 1.8 Les constantes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 1.8.1 Les constantes enti
  11. 11. res . . . . . . . . . . e . . . . . . . . . . . . . . . . 11 1.8.2 Les constantes caract
  12. 12. res . . . . . . . . e . . . . . . . . . . . . . . . . 11 1.8.3 Les constantes ottantes . . . . . . . . . . . . . . . . . . . . . . . . . 13 1.9 Les chanes de caract
  13. 13. res littrales . . . . . . . e e . . . . . . . . . . . . . . . . 14 1.10 Les constantes nommes . . . . . . . . . . . . . e . . . . . . . . . . . . . . . . 14 1.10.1 Les de ne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 1.10.2 Les numrations . . . . . . . . . . . . . e e . . . . . . . . . . . . . . . . 15 1.11 Dclarations de variables ayant un type de base e . . . . . . . . . . . . . . . . 16 1.12 Les oprateurs les plus usuels . . . . . . . . . . e . . . . . . . . . . . . . . . . 16 1.12.1 La ectation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 1.12.2 Laddition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 1.12.3 La soustraction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 1.12.4 La multiplication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 1.12.5 La division . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 1.12.6 Loprateur modulo . . . . . . . . . . . e . . . . . . . . . . . . . . . . 18 1.12.7 Les oprateurs de comparaison . . . . . e . . . . . . . . . . . . . . . . 19 1.13 Les instructions les plus usuelles . . . . . . . . . . . . . . . . . . . . . . . . 19 1.13.1 Instruction expression . . . . . . . . . . . . . . . . . . . . . . . . . . 19 1.13.2 Instruction compose . . . . . . . . . . . e . . . . . . . . . . . . . . . . 20 1.13.3 Instruction if . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 1.14 Inclusion de source . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 1.15 Les procdures et les fonctions . . . . . . . . . e . . . . . . . . . . . . . . . . 22 iii http://krimo666.mylivepage.com/
  14. 14. 1.15.1 D nition dune fonction . . . . . . . . . . . . . . . . . . . e . . . . . 22 1.15.2 Appel dune fonction . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 1.15.3 Les procdures . . . . . . . . . . . . . . . . . . . . . . . . . e . . . . . 25 1.15.4 Fonctions imbriques . . . . . . . . . . . . . . . . . . . . . . e . . . . . 25 1.15.5 Rcursivit . . . . . . . . . . . . . . . . . . . . . . . . . . . e e . . . . . 25 1.15.6 Rfrence
  15. 15. une fonction externe . . . . . . . . . . . . . . . ee a . . . . . 26 1.15.7 Comprendre la documentation de la biblioth
  16. 16. que standard . e . . . . . 26 1.15.8 Les fonctions dans le style KR . . . . . . . . . . . . . . . . . . . . 26 1.16 Impression formatte . . . . . . . . . . . . . . . . . . . . . . . . . . e . . . . . 27 1.17 Structure dun programme . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 1.18 Terminaison dun programme . . . . . . . . . . . . . . . . . . . . . . . . . . 29 1.19 Mise en oeuvre du compilateur C sous UNIX . . . . . . . . . . . . . . . . . 29 1.20 Exercice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 1.21 Rcration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . e e . . . . . 332 Les tableaux 35 2.1 Les tableaux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 2.1.1 Dclaration de tableaux dont les lments ont un type de base e ee . . . 35 2.1.2 Initialisation dun tableau . . . . . . . . . . . . . . . . . . . . . . . . 36 2.1.3 Rfrence
  17. 17. un lment dun tableau . . . . . . . . . . . . . . . ee a ee . . . 37 2.1.4 Chanes et tableaux de caract
  18. 18. res . . . . . . . . . . . . . . . . . e . . . 37 2.2 Les instructions itratives . . . . . . . . . . . . . . . . . . . . . . . . . e . . . 37 2.2.1 Instruction for . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 2.2.2 Instruction while . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 2.2.3 Instruction do . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 2.2.4 Instruction break . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 2.2.5 Instruction continue . . . . . . . . . . . . . . . . . . . . . . . . . . 40 2.3 Les oprateurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . e . . . 40 2.3.1 Oprateur pr et postincrment . . . . . . . . . . . . . . . . . . e e e . . . 40 2.3.2 Oprateur pr et postdcrment . . . . . . . . . . . . . . . . . e e e e . . . 41 2.3.3 Quelques utilisations typiques de ces oprateurs . . . . . . . . . e . . . 41 2.3.4 Oprateur et logique . . . . . . . . . . . . . . . . . . . . . . . . e . . . 42 2.3.5 Oprateur ou logique . . . . . . . . . . . . . . . . . . . . . . . . e . . . 42 2.3.6 Oprateur non logique . . . . . . . . . . . . . . . . . . . . . . . e . . . 43 2.4 Exercice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 433 Les pointeurs 45 3.1 Notion de pointeur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 3.2 Dclarations de variables de type pointeur vers les types de base e . . . . . . 45 3.3 Type de pointeur gnrique . . . . . . . . . . . . . . . . . . . . . ee . . . . . . 45 3.4 Oprateur adresse de . . . . . . . . . . . . . . . . . . . . . . . . . e . . . . . . 46 3.5 Oprateur dindirection . . . . . . . . . . . . . . . . . . . . . . . e . . . . . . 46 3.6 Exercice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 3.7 Pointeurs et oprateurs additifs . . . . . . . . . . . . . . . . . . . e . . . . . . 49 3.7.1 Oprateurs + et - . . . . . . . . . . . . . . . . . . . . . . . e . . . . . . 49 3.7.2 Oprateurs ++ et -- . . . . . . . . . . . . . . . . . . . . . e . . . . . . 49 3.8 Di rence de deux pointeurs . . . . . . . . . . . . . . . . . . . . . e . . . . . . 50 iv http://krimo666.mylivepage.com/
  19. 19. 3.9 Exercice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 3.10 Passage de param
  20. 20. tres . . . . . . . . . . . . . . . . . . . . . . . . . . . e . . . 52 3.10.1 Les besoins du programmeur . . . . . . . . . . . . . . . . . . . . . . 52 3.10.2 Comment les langages de programmation satisfont ces besoins . . . . 52 3.10.3 La stratgie du langage C . . . . . . . . . . . . . . . . . . . . . e . . . 52 3.11 Discussion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 3.12 Une derni
  21. 21. re prcision . . . . . . . . . . . . . . . . . . . . . . . . . . . e e . . . 53 3.13 Exercice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 3.14 Lecture formatte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . e . . . 56 3.15 Les derni
  22. 22. res instructions . . . . . . . . . . . . . . . . . . . . . . . . . e . . . 56 3.15.1 Instruction switch . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 3.15.2 Instruction goto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 3.15.3 Instruction nulle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 3.16 Exercice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 3.17 Rcration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . e e . . . 634 Relations entre tableaux et pointeurs 65 4.1 Conversion des tableaux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 4.2 Loprateur dindexation . . . . . . . . . . . . . . . . . . . . . . . . . . . . e . 66 4.3 Passage de tableau en param
  23. 23. tre . . . . . . . . . . . . . . . . . . . . . . . e . 67 4.4 Modi cation des lments dun tableau pass en param
  24. 24. tre . . . . . . . . ee e e . 68 4.5 Interdiction de modi cation des lments dun tableau pass en param
  25. 25. tre ee e e . 69 4.6 Conversion des chanes littrales . . . . . . . . . . . . . . . . . . . . . . . e . 69 4.7 Retour sur printf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 4.8 Exercice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 4.9 Tableaux multidimensionnels . . . . . . . . . . . . . . . . . . . . . . . . . . 72 4.9.1 Dclarations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . e . 72 4.9.2 Acc
  26. 26. s aux lments . . . . . . . . . . . . . . . . . . . . . . . . . . . e ee . 72 4.9.3 Passage en param
  27. 27. tre . . . . . . . . . . . . . . . . . . . . . . . . . e . 72 4.10 Initialisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 4.11 Exercice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 4.12 Tableau de pointeurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 4.12.1 Cas gnral . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ee . 75 4.12.2 Tableaux de pointeurs vers des chanes . . . . . . . . . . . . . . . . . 76 4.12.3 Param
  28. 28. tres dun programme . . . . . . . . . . . . . . . . . . . . . e . 77 4.13 Tableau et pointeur, cest la meme chose? . . . . . . . . . . . . . . . . . . . 78 4.13.1 Commentaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 4.13.2 Cas particulier des chanes littrales . . . . . . . . . . . . . . . . . e . 78 4.14 Rcration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . e e . 795 Les entres-sorties e 81 5.1 Pointeur invalide . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 5.2 Ouverture et fermeture de chiers . . . . . . . . . . . . . . . . . . . . . . . . 81 5.2.1 Ouverture dun chier : fopen . . . . . . . . . . . . . . . . . . . . . . 81 5.2.2 fermeture dun chier : fclose . . . . . . . . . . . . . . . . . . . . . 83 5.3 Lecture et criture par caract
  29. 29. re sur chier e e . . . . . . . . . . . . . . . . . . 84 5.3.1 lecture par caract
  30. 30. re : fgetc . . . . . e . . . . . . . . . . . . . . . . . . 84 v http://krimo666.mylivepage.com/
  31. 31. 5.3.2 lecture par caract
  32. 32. re : getc . . . . . . . . . . . e . . . . . . . . . . . . 84 5.3.3 lecture par caract
  33. 33. re : getchar . . . . . . . . . e . . . . . . . . . . . . 85 5.3.4 criture par caract
  34. 34. re : fputc . . . . . . . . . . e e . . . . . . . . . . . . 85 5.3.5 criture par caract
  35. 35. re : putc . . . . . . . . . . . e e . . . . . . . . . . . . 86 5.3.6 criture par caract
  36. 36. re : putchar . . . . . . . . . e e . . . . . . . . . . . . 86 5.4 Lecture et criture par lignes sur chier . . . . . . . . e . . . . . . . . . . . . 86 5.4.1 lecture par ligne : fgets . . . . . . . . . . . . . . . . . . . . . . . . . 86 5.4.2 lecture par ligne : gets . . . . . . . . . . . . . . . . . . . . . . . . . . 87 5.4.3 criture par chane : fputs . . . . . . . . . . . . e . . . . . . . . . . . . 87 5.4.4 criture par chane : puts . . . . . . . . . . . . e . . . . . . . . . . . . 88 5.5 E S formattes sur chiers . . . . . . . . . . . . . . . . e . . . . . . . . . . . . 89 5.5.1 E criture formatte : fprintf . . . . . . . . . . e . . . . . . . . . . . . 89 5.5.2 Ecriture formatte : printf . . . . . . . . . . . e . . . . . . . . . . . . 92 5.5.3 E criture formatte dans une chane : sprintf . e . . . . . . . . . . . . 93 5.5.4 Exemples dutilisation des formats . . . . . . . . . . . . . . . . . . . 94 5.5.5 Entres formattes : fscanf . . . . . . . . . . . e e . . . . . . . . . . . . 94 5.5.6 Entres formattes : scanf . . . . . . . . . . . . e e . . . . . . . . . . . . 99 5.5.7 Entres formattes depuis une chane : sscanf . e e . . . . . . . . . . . . 99 5.6 Rcration . . . . . . . . . . . . . . . . . . . . . . . . . e e . . . . . . . . . . . . 100 5.7 Exercice 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 5.8 Exercice 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1006 Structures, unions et numrations e e 103 6.1 Notion de structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103 6.2 Dclaration de structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . e . 103 6.3 Oprateurs sur les structures . . . . . . . . . . . . . . . . . . . . . . . . . e . 105 6.3.1 Acc
  37. 37. s aux membres des structures . . . . . . . . . . . . . . . . . . e . 105 6.3.2 A ectation de structures . . . . . . . . . . . . . . . . . . . . . . . . . 105 6.3.3 Comparaison de structures . . . . . . . . . . . . . . . . . . . . . . . 105 6.4 Tableaux de structures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105 6.5 Exercice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105 6.6 Pointeurs vers une structure . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 6.7 Structures dont un des membres pointe vers une structure du meme type . 107 6.8 Acc
  38. 38. s aux lments dune structure pointe . . . . . . . . . . . . . . . . . e ee e . 107 6.9 Passage de structures en param
  39. 39. tre . . . . . . . . . . . . . . . . . . . . . . e . 108 6.10 Dtermination de la taille alloue a un type . . . . . . . . . . . . . . . . . e e
  40. 40. . 109 6.10.1 Retour sur la conversion des tableaux . . . . . . . . . . . . . . . . . 109 6.11 Allocation et libration despace pour les structures . . . . . . . . . . . . . e . 109 6.11.1 Allocation despace : fonctions malloc et calloc . . . . . . . . . . . 109 6.11.2 Libration despace : procdure free . . . . . . . . . . . . . . . . . . e e . 110 6.12 Exercice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110 6.13 Les champs de bits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114 6.13.1 Gnralits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ee e . 114 6.13.2 Contraintes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115 6.14 Les numrations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . e e . 115 6.15 Les unions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116 6.16 Acc
  41. 41. s aux membres de lunion . . . . . . . . . . . . . . . . . . . . . . . . . e . 116 vi http://krimo666.mylivepage.com/
  42. 42. 6.17 Utilisation pratique des unions . . . . . . . . . . . . . . . . . . . . . . . . . 116 6.18 Une mthode pour allger lacc
  43. 43. s aux membres . . . . . . . . . . . . . . . . 117 e e e7 Les expressions 119 7.1 Les conversions de types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119 7.1.1 Utilit des conversions . . . . . . . . . . . e . . . . . . . . . . . . . . . 119 7.1.2 Ce quil y a dans une conversion . . . . . . . . . . . . . . . . . . . . 120 7.1.3 Lensemble des conversions possibles . . . . . . . . . . . . . . . . . . 120 7.1.4 Les situations de conversions . . . . . . . . . . . . . . . . . . . . . . 121 7.1.5 La promotion des entiers . . . . . . . . . . . . . . . . . . . . . . . . 121 7.1.6 Les conversions arithmtiques habituelles e . . . . . . . . . . . . . . . 122 7.1.7 Les surprises des conversions . . . . . . . . . . . . . . . . . . . . . . 123 7.2 Les oprateurs . . . . . . . . . . . . . . . . . . . e . . . . . . . . . . . . . . . 124 7.2.1 Oprateur non bit
  44. 44. bit . . . . . . . . . . e a . . . . . . . . . . . . . . . 124 7.2.2 Oprateur et bit
  45. 45. bit . . . . . . . . . . . e a . . . . . . . . . . . . . . . 125 7.2.3 Oprateur ou bit
  46. 46. bit . . . . . . . . . . . e a . . . . . . . . . . . . . . . 125 7.2.4 Oprateur ou exclusif bit
  47. 47. bit . . . . . . . e a . . . . . . . . . . . . . . . 125 7.2.5 Oprateur dcalage
  48. 48. gauche . . . . . . . e e a . . . . . . . . . . . . . . . 125 7.2.6 Oprateur dcalage
  49. 49. droite . . . . . . . . e e a . . . . . . . . . . . . . . . 125 7.2.7 Oprateur conditionnel . . . . . . . . . . e . . . . . . . . . . . . . . . 126 7.2.8 Oprateur virgule . . . . . . . . . . . . . . e . . . . . . . . . . . . . . . 126 7.2.9 Oprateurs da ectation compose . . . . e e . . . . . . . . . . . . . . . 127 7.3 Oprateur conversion . . . . . . . . . . . . . . . . e . . . . . . . . . . . . . . . 127 7.4 Smantique des expressions . . . . . . . . . . . . e . . . . . . . . . . . . . . . 129 7.4.1 Oprateurs dadressage . . . . . . . . . . e . . . . . . . . . . . . . . . 129 7.4.2 Priorit et associativit des oprateurs . . e e e . . . . . . . . . . . . . . . 129 7.4.3 Ordre dvaluation des oprandes . . . . . e e . . . . . . . . . . . . . . . 131 7.5 Rcration . . . . . . . . . . . . . . . . . . . . . . e e . . . . . . . . . . . . . . . 1318 Le prprocesseur e 133 8.1 Traitement de macros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133 8.1.1 Les macros sans param
  50. 50. tres . . . e . . . . . . . . . . . . . . . . . . . . 133 8.1.2 Macros prd nies . . . . . . . . ee . . . . . . . . . . . . . . . . . . . . 135 8.1.3 Les macros avec param
  51. 51. tres . . . e . . . . . . . . . . . . . . . . . . . . 135 8.1.4 Les pi
  52. 52. ges des macros . . . . . . e . . . . . . . . . . . . . . . . . . . . 137 8.1.5 Macros gnrant des instructions ee . . . . . . . . . . . . . . . . . . . . 138 8.2 Compilation conditionnelle . . . . . . . . . . . . . . . . . . . . . . . . . . . 139 8.2.1 Commande if . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139 8.2.2 Commandes ifdef et ifndef . . . . . . . . . . . . . . . . . . . . . 140 8.2.3 Loprateur defined . . . . . . . e . . . . . . . . . . . . . . . . . . . . 140 8.2.4 La commande error . . . . . . . . . . . . . . . . . . . . . . . . . . 140 8.2.5 Usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140 8.3 Rcration . . . . . . . . . . . . . . . . . e e . . . . . . . . . . . . . . . . . . . . 141 vii http://krimo666.mylivepage.com/
  53. 53. 9 Les dclarations e 143 9.1 Dclarations de d nition et de rfrence . . . . . . . . . e e ee . . . . . . . . . . . 143 9.1.1 Dclarations de variables . . . . . . . . . . . . . e . . . . . . . . . . . 144 9.1.2 Dclarations de fonctions . . . . . . . . . . . . . e . . . . . . . . . . . 144 9.1.3 Dclarations dtiquettes de structures et union . e e . . . . . . . . . . . 144 9.2 Porte des dclarations . . . . . . . . . . . . . . . . . . . e e . . . . . . . . . . . 145 9.3 Visibilit des identi cateurs . . . . . . . . . . . . . . . . e . . . . . . . . . . . 146 9.4 Les espaces de noms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146 9.4.1 Position du probl
  54. 54. me . . . . . . . . . . . . . . . . e . . . . . . . . . . . 146 9.4.2 Les espaces de noms du langage C . . . . . . . . . . . . . . . . . . . 147 9.5 Dure de vie . . . . . . . . . . . . . . . . . . . . . . . . . e . . . . . . . . . . . 148 9.6 Classes de mmoire . . . . . . . . . . . . . . . . . . . . . e . . . . . . . . . . . 149 9.6.1 Position du probl
  55. 55. me . . . . . . . . . . . . . . . . e . . . . . . . . . . . 149 9.6.2 Les spci cateurs de classe de mmoire . . . . . . e e . . . . . . . . . . . 150 9.7 La compilation spare . . . . . . . . . . . . . . . . . . . e e . . . . . . . . . . . 151 9.7.1 Gnralits . . . . . . . . . . . . . . . . . . . . . ee e . . . . . . . . . . . 151 9.7.2 La mthode du langage C . . . . . . . . . . . . . e . . . . . . . . . . . 152 9.8 D nition de types . . . . . . . . . . . . . . . . . . . . . e . . . . . . . . . . . 153 9.9 Utilit des typedef . . . . . . . . . . . . . . . . . . . . . e . . . . . . . . . . . 153 9.9.1 Restriction dun type de base . . . . . . . . . . . . . . . . . . . . . . 154 9.9.2 D nition de type structure . . . . . . . . . . . . e . . . . . . . . . . . 154 9.9.3 D nition de types opaques . . . . . . . . . . . . e . . . . . . . . . . . 155 9.10 Quali catifs de type . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155 9.11 Fonction a nombre variable de param
  56. 56. tres . . . . . . . .
  57. 57. e . . . . . . . . . . . 156 9.11.1 Exemple 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157 9.11.2 Exemple 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157 9.12 Syntaxe des dclarations . . . . . . . . . . . . . . . . . . e . . . . . . . . . . . 158 9.13 Smantique des dclarations . . . . . . . . . . . . . . . . e e . . . . . . . . . . . 161 9.14 Discussion sur les dclarations . . . . . . . . . . . . . . . e . . . . . . . . . . . 162 9.15 En pratique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163 9.16 Un outil : cdecl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16310 La biblioth
  58. 58. que standard e 165 10.1 Diagnostic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165 10.2 Manipulation de caract
  59. 59. res ctype.h . . . . . . . . e . . . . . . . . . . . . . 165 10.3 Environnement local locale.h . . . . . . . . . . . . . . . . . . . . . . . . 166 10.4 Mathmatiques math.h . . . . . . . . . . . . . . . e . . . . . . . . . . . . . 166 10.4.1 Fonctions trigonomtriques et hyperboliques . e . . . . . . . . . . . . . 166 10.4.2 Fonctions exponentielles et logarithmiques . . . . . . . . . . . . . . . 166 10.4.3 Fonctions diverses . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166 10.5 Branchements non locaux setjmp.h . . . . . . . . . . . . . . . . . . . . . 166 10.6 Manipulation des signaux signal.h . . . . . . . . . . . . . . . . . . . . . 167 10.7 Nombre variable de param
  60. 60. tres stdarg.h . . . . . e . . . . . . . . . . . . . 167 10.8 Entres sorties stdio.h . . . . . . . . . . . . . . . e . . . . . . . . . . . . . 167 10.8.1 Oprations sur les chiers . . . . . . . . . . . e . . . . . . . . . . . . . 167 10.8.2 Acc
  61. 61. s aux chiers . . . . . . . . . . . . . . . . e . . . . . . . . . . . . . 167 10.8.3 Entres-sorties formattes . . . . . . . . . . . e e . . . . . . . . . . . . . 167 viii http://krimo666.mylivepage.com/
  62. 62. 10.8.4 Entres-sorties caract
  63. 63. res . . . . . . . . . e e . . . . . . . . . . . . . . . 168 10.8.5 Entres-sorties binaires . . . . . . . . . . e . . . . . . . . . . . . . . . 168 10.8.6 Position dans un chier . . . . . . . . . . . . . . . . . . . . . . . . . 168 10.8.7 Gestion des erreurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168 10.9 Utilitaires divers stdlib.h . . . . . . . . . . . . . . . . . . . . . . . . . . 168 10.9.1 Conversion de nombres . . . . . . . . . . . . . . . . . . . . . . . . . 168 10.9.2 Gnration de nombres pseudo-alatoires ee e . . . . . . . . . . . . . . . 169 10.9.3 gestion de la mmoire . . . . . . . . . . . e . . . . . . . . . . . . . . . 169 10.9.4 Communication avec lenvironnement . . . . . . . . . . . . . . . . . 169 10.9.5 Recherche et tri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169 10.9.6 Arithmtique sur les entiers . . . . . . . . e . . . . . . . . . . . . . . . 169 10.9.7 Gestion des caract
  64. 64. res multi-octets . . . . e . . . . . . . . . . . . . . . 169 10.10Manipulation de chanes string.h . . . . . . . . . . . . . . . . . . . . . . 169 10.11Manipulation de la date et de lheure time.h . . . . . . . . . . . . . . . . 170A Les jeux de caract
  65. 65. res e 171 A.1 Les normes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171 A.2 Le code ascii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172 A.2.1 Les codes ascii en octal . . . . . . . . . . . . . . . . . . . . . . . . 175 A.2.2 Les codes ascii en hexadcimal e . . . . . . . . . . . . . . . . . . . . 175 A.2.3 Les codes ascii en dcimal . . . e . . . . . . . . . . . . . . . . . . . . 176 A.3 Les codes ISO-Latin-1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177B Bibliographie 179C Ressources Internet 181D La grammaire 183 D.1 Les units lexicales . . . . . . . . . . e . . . . . . . . . . . . . . . . . . . . . . 183 D.2 Les mots-cls . . . . . . . . . . . . . e . . . . . . . . . . . . . . . . . . . . . . 183 D.3 Les identi cateurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184 D.4 Les constantes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184 D.5 Les chanes littrales . . . . . . . . . e . . . . . . . . . . . . . . . . . . . . . . 186 D.6 Les oprateurs . . . . . . . . . . . . e . . . . . . . . . . . . . . . . . . . . . . 186 D.7 La ponctuation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187 D.8 Nom de chier dinclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187 D.9 Les nombres du prprocesseur . . . . e . . . . . . . . . . . . . . . . . . . . . . 187 D.10 Les expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188 D.11 Les dclarations . . . . . . . . . . . . e . . . . . . . . . . . . . . . . . . . . . . 190 D.12 Les instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193 D.13 D nitions externes . . . . . . . . . . e . . . . . . . . . . . . . . . . . . . . . . 194 D.14 Directives du prprocesseur . . . . . e . . . . . . . . . . . . . . . . . . . . . . 194 D.15 Rfrences croises de la grammaire ee e . . . . . . . . . . . . . . . . . . . . . . 196 ix http://krimo666.mylivepage.com/
  66. 66. E Un bestiaire de types 199 E.1 Les types de base . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199 E.2 Les tableaux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200 E.3 Les pointeurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201 E.4 Les fonctions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201 E.5 Les numrations . . . . . . . . . . . . . e e . . . . . . . . . . . . . . . . . . . . 202 E.6 Les structures, unions et champs de bits . . . . . . . . . . . . . . . . . . . . 202 E.7 Les quali catifs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203F Le b^tisier e 205 F.1 Erreur avec les oprateurs . . . . . . . . . . . . e . . . . . . . . . . . . . . . . 205 F.1.1 Erreur sur une comparaison . . . . . . . . . . . . . . . . . . . . . . . 205 F.1.2 Erreur sur la ectation . . . . . . . . . . . . . . . . . . . . . . . . . . 205 F.2 Erreurs avec les macros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206 F.2.1 Un define nest pas une dclaration . e . . . . . . . . . . . . . . . . 206 F.2.2 Un define nest pas une initialisation . . . . . . . . . . . . . . . . 206 F.2.3 Erreur sur macro avec param
  67. 67. tres . . . e . . . . . . . . . . . . . . . . 206 F.2.4 Erreur avec les e ets de bord . . . . . . . . . . . . . . . . . . . . . . 207 F.3 Erreurs avec linstruction if . . . . . . . . . . . . . . . . . . . . . . . . . . . 207 F.4 Erreurs avec les commentaires . . . . . . . . . . . . . . . . . . . . . . . . . . 207 F.5 Erreurs avec les priorits des oprateurs . . . . e e . . . . . . . . . . . . . . . . 208 F.6 Erreur avec linstruction switch . . . . . . . . . . . . . . . . . . . . . . . . 208 F.6.1 Oubli du break . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208 F.6.2 Erreur sur le default . . . . . . . . . . . . . . . . . . . . . . . . . . 208 F.7 Erreur sur les tableaux multidimensionnels . . . . . . . . . . . . . . . . . . 209 F.8 Erreur avec la compilation spare . . . . . . . e e . . . . . . . . . . . . . . . . 209 x http://krimo666.mylivepage.com/
  68. 68. Avant-proposAu sujet de lauteur Je suis ingnieur au cnrs et je travaille dans un laboratoire de recherche de luniver- esit de Grenoble : le laboratoire clips http: www-clips.imag.fr. Toute noti cation ederreur ou toute proposition damlioration de ce document sera la bienvenue
  69. 69. le-mail e aBernard.Cassagne@imag.fr.Au sujet de ce manuel La littrature technique nous a habitu
  70. 70. deux styles dcriture de manuels : le style e ea e manuel de rfrence et le style guide de lutilisateur Les manuels de rfrence se ee eedonnent comme buts detre exhaustifs et rigoureux. Les guides de lutilisateur se donnentcomme but detre didactiques. Cette partition vient du fait quil est quasiment impossiblesur des sujets complexes comme les langages de programmation detre
  71. 71. la fois rigoureux aet didactique. Pour sen persuader il su t de lire le texte dune norme internationale. Ce manuel se place dans la catgorie guide de lutilisateur : son but est de permettre ea
  72. 72. une personne sachant programmer, dacqurir les lments fondamentaux du langage C. e eeCe manuel prsente donc chaque notion selon une gradation des di cults et ne cherche e epas
  73. 73. etre exhaustif. Il comporte de nombreux exemples, ainsi que des exercices dont la asolution se trouve dans le corps du texte, mais commence toujours sur une page di rente. eLe lecteur peut donc au choix, ne lire les solutions quapr
  74. 74. s avoir programm sa solution e epersonnelle, ou bien lire directement la solution comme si elle faisait partie du manuel.Les notions supposes connues du lecteur e Les notions supposes connues du lecteur sont les concepts gnraux concernant les lan- e eegages de programmation. En n du texte se trouve un glossaire qui regroupe des conceptsgnraux et certains concepts propres du langage C. En cas de rencontre dun mot inconnu, eele lecteur est invit
  75. 75. sy reporter. eaUn mot sur les probl
  76. 76. mes de traduction e Le document de rfrence concernant le langage C est la norme ansi d nissant le ee elangage. Cest un document crit en anglais technique, ce qui pose des probl
  77. 77. mes de e etraduction : comment traduire les nologismes invents pour les besoins du langage? De e emani
  78. 78. re
  79. 79. ne pas drouter les lecteurs franais, je me suis impos de respecter les choix de e a e c e 1 http://krimo666.mylivepage.com/
  80. 80. traduction dun grand diteur 1 de livres techniques, meme quand je nai pas trouv ces e echoix tr
  81. 81. s heureux. Jai donc utilis dclarateur, initialisateur et spci cateur bien que me e e e esemble-t-il, ils r^pent assez fort le palais quand on les prononce. aConventions syntaxiques Les r
  82. 82. gles de grammaires qui sont donnes dans le corps de ce manuel sont simpli es e e edans un but didactique par rapport
  83. 83. la grammaire o cielle du langage. Cependant, le alecteur trouvera
  84. 84. lannexe D la grammaire sous une forme exhaustive et conforme
  85. 85. la a anorme ansi. La typographie des r
  86. 86. gles suit les conventions suivantes : e 1. les lments terminaux du langage seront crits dans une fonte
  87. 87. largeur constante, ee e a comme ceci : while. 2. les lments non terminaux du langage seront crits en italique, comme ceci : ee e instruction. 3. les r
  88. 88. gles de grammaires seront crites de la mani
  89. 89. re suivante : e e e les parties gauches de r
  90. 90. gles seront seules sur leur ligne, cadres
  91. 91. gauche et e e a suivies du signe deux points :. les di rentes parties droites possibles seront introduites par le signe et e indentes sur la droite. e Exemple : instruction : if expression instruction 1 if expression instruction 1 else instruction 2 Ceci signi e quil y a deux mani
  92. 92. res possibles de driver le non-terminal ins- e e truction. La premi
  93. 93. re r
  94. 94. gle indique quon peut le driver en : e e e if expression instruction 1 la deuxi
  95. 95. me r
  96. 96. gle indique quon peut aussi le driver en : e e e if expression instruction 1 else instruction 2 une partie droite de r
  97. 97. gle pourra etre crite sur plusieurs lignes. Ceci permettra e e de r ter une mani
  98. 98. re possible de mettre en page le fragment de programme ee e C correspondant, de faon
  99. 99. obtenir une bonne lisibilit. c a e Sans en changer la signi cation, lexemple prcdent aurait pu etre crit : ee e instruction : if expression instruction 1 if expression instruction 1 else instruction 2 1. Cest masson qui a dit en franais 1 et 2 Cf. Bibliographie e e c 2 http://krimo666.mylivepage.com/
  100. 100. les lments optionnels dune r
  101. 101. gle seront indiqus en mettant le mot option ee e e en italique et dans une fonte plus petite
  102. 102. droite de llment concern. a ee e Par exemple, la r
  103. 103. gle : e dclarateur-init : e dclarateur initialisateur option e indique que dclarateur-init peut se driver soit en : e e dclarateur initialisateur e soit en : dclarateur eRemerciements Beaucoup de personnes mont aid
  104. 104. amliorer le manuscrit original en me signalant ea ede nombreuses erreurs et en me proposant des amliorations. Quelles soient toutes remer- ecies de leurs lectures attentives et amicalement critiques, tout particuli
  105. 105. rement Damien e eGenthial, Fabienne Lagnier, Xavier Nicollin et Serge Rouveyrol. 3 http://krimo666.mylivepage.com/
  106. 106. Chapitre 1Les bases Le but de ce chapitre est de prsenter les lments de base du langage C, sous leur forme e eela plus simple. Arriv au bout du chapitre, le lecteur sera capable dcrire des programmes e elmentaires.ee1.1 Les versions du langage C Le langage C a subi au cours de son histoire deux grandes tapes de d nition. Il a e et d ni une premi
  107. 107. re fois par deux chercheurs des Laboratoires Bell, B. Kernighan et D.ee e eRitchie, dans un livre intitul The C Programming Language , publi en 1978. Cette e eversion est appele Kernighan et Ritchie 78 , ou KR 78 en abrg, ou encore le plus e eesouvent, simplement KR. Suite
  108. 108. lextraordinaire succ
  109. 109. s dunix, qui induisit le succ
  110. 110. s du langage C, la situation a e edevint confuse : plusieurs fournisseurs de compilateurs mirent sur le march des compi- e e
  111. 111. lateurs non conformes
  112. 112. KR car comportant des extensions particuli
  113. 113. res. A la n des aannes 80, il devint ncessaire de mettre de lordre dans ce chaos et donc de normaliser e ele langage, t^che
  114. 114. laquelle sattela lansi 1, organisme de normalisation amricain. La a a enorme ansi fut termine en 1989. En 1990, liso 2 , organisme de normalisation interna- etional, donc chapeautant lansi, adopta tel quel le standard ansi en tant que standardiso. Cette seconde version du langage C devrait donc sappeler iso c, mais comme lesacteurs importants du monde informatique sont de culture anglo-saxonne et que ceux-cipersistent
  115. 115. lappeler ansi c, presque? tout le monde fait de meme. Dans ce manuel, anous suivrons lusage gnral, et utiliserons lexpression ansi c pour dsigner la norme ee ecommune
  116. 116. lansi et liso. a Ce document dcrit C ansi, avec parfois des rfrences
  117. 117. C KR, de mani
  118. 118. re
  119. 119. per- e ee a e amettre au lecteur de comprendre les sources crits avant lapparition de la norme. e1.2 Langage et biblioth
  120. 120. que standard e Le langage C a t conu pour lcriture de syst
  121. 121. mes, en particulier le syst
  122. 122. me unix. ee c e e ePour cette raison, ses concepteurs ont fait une sparation nette entre ce qui est purement e 1. American National Standards Institute 2. International Standards Organization 5 http://krimo666.mylivepage.com/
  123. 123. algorithmique dclarations, instructions, etc. et tout ce qui est interaction avec le sys- et
  124. 124. me entres sorties, allocation de mmoire, etc. qui est ralis par appel de fonctions e e e e ese trouvant dans une biblioth
  125. 125. que dite biblioth
  126. 126. que standard. Cette coupure se retrouve e edans la norme qui est compose essentiellement de deux grands chapitres, les chapitres e langage et biblioth
  127. 127. que . e Ce manuel se donne comme objectif de donner une vue densemble du langage, mais pasde la biblioth
  128. 128. que standard. De la biblioth
  129. 129. que standard ne seront prsentes de mani
  130. 130. re e e e e ecompl
  131. 131. te que les fonctions permettant de raliser les entres-sorties et la gestion mmoire. e e e eCependant, la liste exhaustive des noms des fonctions de la biblioth
  132. 132. que, classs par type e edutilisation, est donne dans le chapitre 10. e1.3 Les phases de compilationLes compilateurs C font subir deux transformations aux programmes : 1. un prprocesseur ralise des transformations dordre purement textuel, pour rendre e e des services du type inclusion de source, compilation conditionnelle, et traitement de macros ; 2. le compilateur proprement dit prend le texte gnr par le prprocesseur et le traduit e ee e en instructions machine. La fonction de prprocesseur est assez souvent implmente par un programme spar e e e e ecpp sous unix qui est automatiquement appel par le compilateur. e1.4 Les jeux de caract
  133. 133. res e Le lecteur non familiaris avec les probl
  134. 134. mes de codage de caract
  135. 135. res peut se reporter e e ea
  136. 136. lannexe A, o
  137. 137. ces probl
  138. 138. mes sont dvelopps. u e e e Le langage C nimpose pas un jeu de caract
  139. 139. res particulier. Par contre tout le langage emots-cls, oprateurs, etc. est d ni en utilisant les caract
  140. 140. res ascii. Meme les identi - e e e ecateurs doivent etre crits avec lalphabet anglais. Par contre, le jeu de caract
  141. 141. res utilis e e epour les constantes caract
  142. 142. re, les chanes de caract
  143. 143. res et les commentaires est dpendant e e ede limplmentation. e Pendant tr
  144. 144. s longtemps les programmeurs non anglophones ont utilis lascii faute de e emieux, pour programmer en C. Actuellement, si on est dans le monde unix, il ne doitpas y avoir de probl
  145. 145. me pour disposer dun environnement de travail la fenetre, le shell, elditeur, le compilateur enti
  146. 146. rement
  147. 147. la norme iso-8859. Dans ce manuel, on suppose e e aque le lecteur dispose dun tel environnement : les exemples donns sont crits en iso-8859. e e1.5 Les units lexicales e Le langage comprends 6 types dunits lexicales : les mots-cls, les identi cateurs, les e econstantes, les chanes, les oprateurs et les signes de ponctuation. e 6 http://krimo666.mylivepage.com/
  148. 148. 1.5.1 Les mots-cls e Le langage C est un langage
  149. 149. mots-cls, ce qui signi e quun certain nombre de a emots sont rservs pour le langage lui-meme et ne peuvent donc pas etre utiliss comme e e eidenti cateurs. La liste exhaustive des mots-cls est la suivante : e auto double int struct break else long switch case enum register typedef char extern return union const float short unsigned continue for signed void default goto sizeof volatile do if static whileAttention Si le compilateur produit un message derreur syntaxique incomprhensible il est re- ecommand davoir le r exe de consulter la liste des mots cls pour vri er que lon a pas e e e epris comme identi cateur un mot-cl. Si le lecteur dsire etre convaincu, il lui est suggr e e eede donner le nom long
  150. 150. une variable enti
  151. 151. re. a e1.5.2 Les identi cateurs Le but dun identi cateur est de donner un nom
  152. 152. une entit du programme variable, a eprocdure, etc. Les identi cateurs sont forms dune suite de lettres, de chi res et du signe e esoulign, suite dont le premier caract
  153. 153. re ne peut pas etre un chi re. Les lettres formant e eles identi cateurs peuvent etre majuscules ou minuscules, mais doivent faire partie delalphabet anglais : les lettres accentues sont interdites. Les noms var1, PremierIndex, ei_tab, _deb sont des identi cateurs valides, mais 1i et i:j ne le sont pas. Un compilateur a le droit de tronquer les identi cateurs internes ceux qui ne sont pasexports
  154. 154. un diteur de liens au del
  155. 155. dune certaine longueur. Cette limite dpend de e a e a elimplmentation, mais ne doit pas etre infrieure
  156. 156. 31 caract
  157. 157. res. e e a e De la meme mani
  158. 158. re, les identi cateurs externes exports
  159. 159. un diteur de liens pour- e e a eront etre tronqus au del
  160. 160. dune certaine longueur. Cette limite est gnralement plus e a eesv
  161. 161. re, mais ne peut etre infrieure
  162. 162. 6 caract
  163. 163. res. De surcrot, la distinction entre minus- ee e a ecules et majuscules nest pas garantie au contraire des noms internes, pour lesquels cettedistinction est garantie.1.6 Les commentaires Syntaxe : Les commentaires dbutent par e * et se terminent par * . Exemple : * Ceci est un commentaire * Toute occurrence de * est interprte comme le dbut dun commentaire sauf dans ee e une chane littrale, ou un commentaire les commentaires ne peuvent donc pas etre e imbriqus. e 7 http://krimo666.mylivepage.com/
  164. 164. Recommandations : Dans le domaine gnral de la programmation, pas seulement le langage C, il est ee admis quil faille commenter selon les niveaux suivants : unit de compilation : pour indiquer le nom de lauteur, les droits de copyright, e la date de cration, les dates et auteurs des di rentes modi cations, ainsi que e e la raison detre de lunit ; e procdure : pour indiquer les param
  165. 165. tres et la raison detre de la procdure ; e e e groupe dintructions : pour exprimer ce que ralise une fraction signi cative e dune procdure ; e dclaration ou instruction : le plus bas niveau de commentaire. e Pour le niveau unit de compilation, voici un exemple tir du source de perl : e e * * Copyright c 1991, Larry Wall * * You may distribute under the terms of either the GNU General Public * License or the Artistic License, as specified in the README file. * * $Log: perl.c,v $ * Revision 4.0.1.8 1993 02 05 19:39:30 lwall * Revision 4.0.1.7 92 06 08 14:50:39 lwall * Revision 4.0.1.3 91 06 07 11:40:18 lwall * Revision 4.0.1.2 91 06 07 11:26:16 lwall * Revision 4.0.1.1 91 04 11 17:49:05 lwall * Revision 4.0 91 03 20 01:37:44 lwall * 4.0 baseline. * * Pour le niveau de la procdure, je trouve agrable de raliser des esp
  166. 166. ces de car- e e e e touches permettant de dcouper visuellement un listing en ses di rentes procdures, e e e comme ceci par exemple : ****************************************************************************** * * * strcpy * * * * But: * * copie une cha^ne dans une autre * * * * Interface: * * s1 : cha^ne destination * * s2 : cha^ne source * * * ****************************************************************************** En ce qui concerne le niveau groupe dinstruction, il est classique de faire une mise en page comme dans lexemple suivant tir du source de dvips 3 : e *3. dvips est un traducteur en PostScript du format gnr par TeX e ee 8 http://krimo666.mylivepage.com/
  167. 167. * If nothing above worked, then we get desperate. We attempt to * open the stupid font at one of a small set of predefined sizes, * and then use PostScript scaling to generate the correct size. * * We much prefer scaling up to scaling down, since scaling down * can omit character features, so we try the larger sizes first, * and then work down. * Pour le niveau dclaration ou instruction, on commentera sur la meme ligne. Exemple e tir du source du compilateur gnu cc : e char *name; * Function unit name. * struct function_unit *next; * Next function unit. * int multiplicity; * Number of units of this type. * int simultaneity; * Maximum number of simultaneous insns on this function unit or 0 if unlimited. * struct range ready_cost; * Range of ready cost values. * struct range issue_delay; * Range of issue delay values. *Attention Lerreur classique avec les commentaires est doublier la squence fermante * . Dans e ce cas, le compilateur va considrer que le commentaire se poursuit jusqu
  168. 168. la n du e a prochain commentaire et ceci peut ne pas gnrer derreur syntaxique. ee Exemple : instruction * premier commentaire instruction ... instruction * second commentaire * instruction On voit que dans ce cas, tout un ensemble dinstructions sera ignor par le compila- e teur sans gnrer le moindre message derreur ee 4. Un commentaire ne peut pas contenir un commentaire, il nest donc pas possible de mettre en commentaire un morceau de programme comportant dj
  169. 169. des commen- ea taires 5. 4. Dans 5 , Peter Van der Linden donne un exemple amusant de ce bug. Dans un compilateur, le cacit ede lalgorithme de hachage de la table des identi cateurs dpendait de la bonne initialisation dune variable. eDans le code initial, linitialisation avait t mise involontairement dans un commentaire provoquant une eeinitialisation par dfaut
  170. 170. zro. La simple correction du bug, t gagner 15 de cacit au compilateur ! e a e e 5. Voir cependant F.4 9 http://krimo666.mylivepage.com/
  171. 171. 1.7 Les types de base1.7.1 Les caract
  172. 172. res e Le mot-cl dsignant les caract
  173. 173. res est char. Un objet de ce type doit pouvoir contenir e e ele code de nimporte quel caract
  174. 174. re de lensemble des caract
  175. 175. res utilis sur la machine. e e eLe codage des caract
  176. 176. res nest pas d ni par le langage : cest un choix dimplmentation. e e eCependant, dans la grande majorit des cas, le code utilis est le code dit ascii, ou un e esurensemble comme par exemple la norme iso-8859.Attention Le type caract
  177. 177. re est original par rapport
  178. 178. ce qui se fait habituellement dans les e alangages de programmation. La norme prcise clairement quun objet de type caract
  179. 179. re e epeut etre utilis dans toute expression o
  180. 180. un objet de type entier peut etre utilis. Par e u eexemple, si c est de type char, il est valide dcrire c + 1 : cela donnera le caract
  181. 181. re e esuivant dans le code utilis sur la machine. e1.7.2 Les entiers Le mot cl dsignant les entiers est int. Les entiers peuvent etre a ects de deux types e e edattributs : un attribut de prcision et un attribut de reprsentation. e e Les attributs de prcision sont short et long. Du point de vue de la prcision, on peut e eavoir trois types dentiers : short int, int et long int. Les int sont implments sur ce e equi est un mot naturel de la machine. Les long int sont implments si possible plus e egrands que les int, sinon comme des int. Les short int sont implments si possible e eplus courts que les int, sinon comme des int. Les implmentations classiques mettent les eshort int sur 16 bits, les long int sur 32 bits, et les int sur 16 ou 32 bits selon ce quiest le plus e cace. Lattribut de reprsentation est unsigned. Du point de vue de la reprsentation, on e epeut avoir deux types dentiers : int et unsigned int. Les int permettent de contenirdes entiers signs, tr
  182. 182. s gnralement en reprsentation en complment
  183. 183. 2, bien que cela e e ee e e ane soit pas impos par le langage. Les unsigned int permettent de contenir des entiers enon signs en reprsentation binaire. e e On peut combiner attribut de prcision et attribut de reprsentation et avoir par e eexemple un unsigned long int. En rsum, on dispose donc de six types dentiers : e eint, short int, long int tous trois signs et unsigned int, unsigned short int eet unsigned long int.1.7.3 Les ottants Il existe trois types de ottants correspondants
  184. 184. trois prcisions possibles. En allant a ede la prcision la plus faible vers la plus forte, on dispose des types float, double et elong double. La prcision e ectivement utilise pour chacun de ces types dpend de e e elimplmentation. e 10 http://krimo666.mylivepage.com/
  185. 185. 1.8 Les constantes1.8.1 Les constantes enti
  186. 186. res e Syntaxe : On dispose de 3 notations pour les constantes enti
  187. 187. res : dcimale, octale et hexad- e e e cimale. Les constantes dcimales scrivent de la mani
  188. 188. re usuelle ex : 372. Les constantes e e e octales doivent commencer par un zro et ne comporter que des chi res octaux e ex : 0477. Les constantes hexadcimales doivent commencer par 0x ou 0X et etre e composes des chi res de 0
  189. 189. 9, ainsi que des lettres de a
  190. 190. f sous leur forme majuscule e a a ou minuscule ex : 0x5a2b, 0X5a2b, 0x5A2B. Une constante enti
  191. 191. re peut etre su xe par la lettre u ou U pour indiquer quelle e e doit etre interprte comme tant non signe. Elle peut galement etre su xe par ee e e e e la lettre l ou L pour lui donner lattribut de prcision long. e Smantique : e Le type dune constante enti
  192. 192. re est le premier type, choisi dans une liste de types, e permettant de reprsenter la constante : e forme de la constante liste de types pas de su xe, dcimal e int, long int, unsigned long int pas de su xe, octal ou hexadcimal int, unsigned int, long int, unsigned e long int su x par u ou U e unsigned int, unsigned long int su x par l ou L e long int, unsigned long int su x par u ou U et l ou L e unsigned long intAttention Ces conventions dcriture des constantes ne respectent pas lcriture mathmatique, e e epuisque 010 devant etre interprt en octal, nest pas gal
  193. 193. 10. ee e a1.8.2 Les constantes caract
  194. 194. res e Syntaxe : Une constante caract
  195. 195. re scrit entoure du signe . La r
  196. 196. gle gnrale consiste
  197. 197. crire e e e e ee ae le caract
  198. 198. re entour du signe ; par exemple, la constante caract
  199. 199. re correspondant e e e au caract
  200. 200. re g scrit g. e e 11 http://krimo666.mylivepage.com/

×