Programmer en langage C
230
© Éditions Eyrolles
●
précision (n désigne une constante entière positive écrite en notation décimale) :
.n : la signification dépend du caractère de conversion, de la manière suivante :
• d, i, o, u, x ou X : au moins n chiffres seront imprimés. Si le nombre comporte moins de
n chiffres, l’affichage sera complété à gauche par des zéros. Notez que cela n’est pas
contradictoire avec l’indication de largeur, si celle-ci est supérieure à n. En effet, dans ce
cas, le nombre pourra être précédé à la fois d’espaces et de zéros
• e, E ou f : on obtiendra n chiffres après le point décimal, avec arrondi du dernier
• g ou G : on obtiendra au maximum n chiffres significatifs
• c : sans effet
• s : au maximum n caractères seront affichés. Notez que cela n’est pas contradictoire
avec l’indication de largeur
.0 : la signification dépend du caractère de conversion, comme suit :
• d, i, o, u, x ou X : choix de la valeur par défaut de la précision (voir ci-dessous)
• e, E ou f : pas d’affichage du point décimal
* : la valeur effective de n est fournie dans la « liste d’expressions »
rien : choix de la valeur par défaut, à savoir :
• 1 pour d, i, o, u, x ou X
• 6 pour e, E ou f
• tous les chiffres significatifs pour g ou G
• tous les caractères pour s
• sans effet pour c
●
h|l|L :
h : l’expression correspondante est d’un type short int (signé ou non). En fait, il faut voir
que, compte tenu des conversions implicites, printf ne peut jamais recevoir de valeur d’un
tel type. Tout au plus peut-elle recevoir un entier dont on (le programmeur) sait qu’il résulte de
la conversion d’un short. Dans certaines implémentations, l’emploi du modificateur h
conduit alors à afficher la valeur correspondante suivant un gabarit différent de celui réservé à
un int (c’est souvent le cas pour le nombre de caractères hexadécimaux). Ce code ne peut,
de toute façon, avoir une éventuelle signification que pour les caractères de conversion : d, i,
o, u, x ou X
l : Ce code précise que l’expression correspondante est de type long int. Il n’a de signification que pour les caractères de conversion : d, i, o, u, x ou X
L : Ce code précise que l’expression correspondante est de type long double. Il n’a de signification que pour les caractères de conversion : e, E, f, g ou G
Delannoy Livre.book Page 230 Mercredi, 6. mai 2009 4:27 16
230
© Éditions Eyrolles
●
précision (n désigne une constante entière positive écrite en notation décimale) :
.n : la signification dépend du caractère de conversion, de la manière suivante :
• d, i, o, u, x ou X : au moins n chiffres seront imprimés. Si le nombre comporte moins de
n chiffres, l’affichage sera complété à gauche par des zéros. Notez que cela n’est pas
contradictoire avec l’indication de largeur, si celle-ci est supérieure à n. En effet, dans ce
cas, le nombre pourra être précédé à la fois d’espaces et de zéros
• e, E ou f : on obtiendra n chiffres après le point décimal, avec arrondi du dernier
• g ou G : on obtiendra au maximum n chiffres significatifs
• c : sans effet
• s : au maximum n caractères seront affichés. Notez que cela n’est pas contradictoire
avec l’indication de largeur
.0 : la signification dépend du caractère de conversion, comme suit :
• d, i, o, u, x ou X : choix de la valeur par défaut de la précision (voir ci-dessous)
• e, E ou f : pas d’affichage du point décimal
* : la valeur effective de n est fournie dans la « liste d’expressions »
rien : choix de la valeur par défaut, à savoir :
• 1 pour d, i, o, u, x ou X
• 6 pour e, E ou f
• tous les chiffres significatifs pour g ou G
• tous les caractères pour s
• sans effet pour c
●
h|l|L :
h : l’expression correspondante est d’un type short int (signé ou non). En fait, il faut voir
que, compte tenu des conversions implicites, printf ne peut jamais recevoir de valeur d’un
tel type. Tout au plus peut-elle recevoir un entier dont on (le programmeur) sait qu’il résulte de
la conversion d’un short. Dans certaines implémentations, l’emploi du modificateur h
conduit alors à afficher la valeur correspondante suivant un gabarit différent de celui réservé à
un int (c’est souvent le cas pour le nombre de caractères hexadécimaux). Ce code ne peut,
de toute façon, avoir une éventuelle signification que pour les caractères de conversion : d, i,
o, u, x ou X
l : Ce code précise que l’expression correspondante est de type long int. Il n’a de signification que pour les caractères de conversion : d, i, o, u, x ou X
L : Ce code précise que l’expression correspondante est de type long double. Il n’a de signification que pour les caractères de conversion : e, E, f, g ou G
Delannoy Livre.book Page 230 Mercredi, 6. mai 2009 4:27 16
