OVH Cloud OVH Cloud

%d ou %i ?

55 réponses
Avatar
Jseb
Bonjour,

J'ai l'habitude d'écrire l'affichage des mes entiers avec printf sous
cette forme: printf("%i ",toto);

On m'a dit plusieurs fois qu'il fallait écrire: printf("%d ",toto);
On m'a dit également que "%i" était une windozerie. J'ai vérifié dans
le K&R, c'est équivalent (tableau p.152 2eme édition Masson)

Si quelqu'un a une explication cohérente (autre que "windozerie"), je
suis prêt à abandonner le "%i".

--
Alussinan, l'internette que ça fout la trouille.

10 réponses

1 2 3 4 5
Avatar
Éric Lévénez
Le 18/08/03 18:30, dans ,
« Jseb » a écrit :

J'ai l'habitude d'écrire l'affichage des mes entiers avec printf sous
cette forme: printf("%i ",toto);

On m'a dit plusieurs fois qu'il fallait écrire: printf("%d ",toto);
On m'a dit également que "%i" était une windozerie. J'ai vérifié dans
le K&R, c'est équivalent (tableau p.152 2eme édition Masson)

Si quelqu'un a une explication cohérente (autre que "windozerie"), je
suis prêt à abandonner le "%i".


Le format i est une vieillerie qui vient du Fortran. Hélas on ne peut
l'enlever de la norme C car trop de programmeurs l'utilisent encore.

--
Éric Lévénez -- <http://www.levenez.com>
Unix is not only an OS, it's a way of life.

Avatar
Gabriel Dos Reis
Éric Lévénez writes:

| Le 18/08/03 18:30, dans ,
| « Jseb » a écrit :
|
| > J'ai l'habitude d'écrire l'affichage des mes entiers avec printf sous
| > cette forme: printf("%i ",toto);
| >
| > On m'a dit plusieurs fois qu'il fallait écrire: printf("%d ",toto);
| > On m'a dit également que "%i" était une windozerie. J'ai vérifié dans
| > le K&R, c'est équivalent (tableau p.152 2eme édition Masson)
| >
| > Si quelqu'un a une explication cohérente (autre que "windozerie"), je
| > suis prêt à abandonner le "%i".
|
| Le format i est une vieillerie qui vient du Fortran. Hélas on ne peut

c'est dans les vieilles casseroles qu'on fait les meilleures soupes.

%i comme int, "%p" comme pointer, "%s" comme string sont plus faciles
à retenir que "%g" comme flottant ;-/

-- Gaby
Avatar
Éric Lévénez
Le 18/08/03 20:52, dans ,
« Gabriel Dos Reis » a écrit :

Éric Lévénez writes:

| Le format i est une vieillerie qui vient du Fortran. Hélas on ne peut

c'est dans les vieilles casseroles qu'on fait les meilleures soupes.

%i comme int, "%p" comme pointer, "%s" comme string sont plus faciles
à retenir que "%g" comme flottant ;-/


Le format g vient aussi du Fortran donc facile à retenir.

--
Éric Lévénez -- <http://www.levenez.com>
Unix is not only an OS, it's a way of life.

Avatar
Jean-Marc Bourguet
Jseb writes:

J'ai l'habitude d'écrire l'affichage des mes entiers avec printf
sous cette forme: printf("%i ",toto);

On m'a dit plusieurs fois qu'il fallait écrire: printf("%d ",toto);
On m'a dit également que "%i" était une windozerie. J'ai vérifié dans
le K&R, c'est équivalent (tableau p.152 2eme édition Masson)

Si quelqu'un a une explication cohérente (autre que "windozerie"), je
suis prêt à abandonner le "%i".


Pour printf %i et %d ont la meme signification, pour scanf, elle est
legerement differente (%i deduit la base, %d prend d'office 10).

A+

--
Jean-Marc
FAQ de fclc: http://www.isty-info.uvsq.fr/~rumeau/fclc
Site de usenet-fr: http://www.usenet-fr.news.eu.org

Avatar
Vincent Lefevre
Dans l'article ,
Gabriel Dos Reis écrit:

%i comme int, "%p" comme pointer, "%s" comme string sont plus
faciles à retenir que "%g" comme flottant ;-/


Mais %d comme décimal est plus facile à retenir que %i. Et %g, qui
vient après %e (engineer notation) et %f (fixed point), est facile
à retenir.

--
Vincent Lefèvre - Web: <http://www.vinc17.org/> - 100%
validated (X)HTML - Acorn Risc PC, Yellow Pig 17, Championnat International
des Jeux Mathématiques et Logiques, TETRHEX, etc.
Work: CR INRIA - computer arithmetic / SPACES project at LORIA

Avatar
Gabriel Dos Reis
Vincent Lefevre <vincent+ writes:

| Dans l'article ,
| Gabriel Dos Reis écrit:
|
| > %i comme int, "%p" comme pointer, "%s" comme string sont plus
| > faciles à retenir que "%g" comme flottant ;-/
|
| Mais %d comme décimal est plus facile à retenir que %i. Et %g, qui

surtout si %i comme int et %d pas comme double :-/
et bien sûr, la première lettre %a pour dire hexa.

| vient après %e (engineer notation) et %f (fixed point), est facile
| à retenir.

et %h qui vient après %g qui vient après %e pour dire short.
%j pour dire intmat_t. C'est imparable comme moyen mnémotechnique.

-- Gaby
Avatar
Christophe Le Gal
surtout si %i comme int et %d pas comme double :-/


Loin de moi l'idee d'essayer de trouver des moyens mnemotechniques pour
le reste, mais en l'occurence ici %d pour decimal et %i pour integer
(dont l'affichage se fait en decimal) me semble logique.
Surtout quand on pense au comportement de scanf (cf post de Jean-Marc).

--
Christophe Le Gal

Avatar
Jseb
Pour printf %i et %d ont la meme signification, pour scanf, elle est
legerement differente (%i deduit la base, %d prend d'office 10).


Ok, merci à tous.
Je vais essayer d'écrire "%d", même si pour moi, ça évoque plus
"double" qu'autre chose (alors que "%i", ça évoque integer).

--
Alussinan, l'internette que ça fout la trouille.

Avatar
Vincent Lefevre
Dans l'article ,
Gabriel Dos Reis écrit:

surtout si %i comme int et %d pas comme double :-/
et bien sûr, la première lettre %a pour dire hexa.


Ben le 'h', le 'e' et le 'x' étant déjà pris, le 'a' n'est pas un
si mauvais choix.

Et que penser du '=' qui indique une affectation et non pas une égalité?
et du '<<' qui indique un décalage est non pas 'est petit devant'?

| vient après %e (engineer notation) et %f (fixed point), est facile
| à retenir.

et %h qui vient après %g qui vient après %e pour dire short.


'h', c'est la 2e lettre de 'short', le 's' étant déjà pris pour 'string'.
Ce n'est pas un plus mauvais choix que le %s (qui peut vouloir dire
string ou short).

%j pour dire intmat_t. C'est imparable comme moyen mnémotechnique.


On pouvait difficilement reprendre 'i'. En revanche, 'm' m'aurait semblé
un meilleur choix.

--
Vincent Lefèvre - Web: <http://www.vinc17.org/> - 100%
validated (X)HTML - Acorn Risc PC, Yellow Pig 17, Championnat International
des Jeux Mathématiques et Logiques, TETRHEX, etc.
Work: CR INRIA - computer arithmetic / SPACES project at LORIA

Avatar
Gabriel Dos Reis
Vincent Lefevre <vincent+ writes:

| Dans l'article ,
| Gabriel Dos Reis écrit:
|
| > surtout si %i comme int et %d pas comme double :-/
| > et bien sûr, la première lettre %a pour dire hexa.
|
| Ben le 'h', le 'e' et le 'x' étant déjà pris, le 'a' n'est pas un
| si mauvais choix.

avec une définition adéquate de « mauvais ».

Je ne dis pas que « a » est un bon ou mauvois choix. Juste curieux.

| Et que penser du '=' qui indique une affectation et non pas une égalité?
| et du '<<' qui indique un décalage est non pas 'est petit devant'?

ce sont des spécificateurs de format ?

| > | vient après %e (engineer notation) et %f (fixed point), est facile
| > | à retenir.
|
| > et %h qui vient après %g qui vient après %e pour dire short.
|
| 'h', c'est la 2e lettre de 'short', le 's' étant déjà pris pour 'string'.

'r' est la quatrième lettre de 'short'. C'est aussi celui de « court ».

Mais, là encore, je ne dis pas qu'il aurait fallu le prendre.

| Ce n'est pas un plus mauvais choix que le %s (qui peut vouloir dire
| string ou short).

cela n'en est pas un meilleur choix, mais juste un choix encore plus curieux.

| > %j pour dire intmat_t. C'est imparable comme moyen mnémotechnique.
|
| On pouvait difficilement reprendre 'i'.

pourquoi reprendre ?

| En revanche, 'm' m'aurait semblé un meilleur choix.

alors tu ne connais pas ce que POSIX en fait :-/

-- Gaby
1 2 3 4 5