Quelle est la différence entre %d
et %i
lorsqu'il est utilisé comme spécificateurs de format dans printf
?
202
Ils sont les mêmes lorsqu'ils sont utilisés pour la sortie, par exemple avec printf
.
Cependant, ceux-ci sont différents lorsqu'ils sont utilisés comme spécificateur d'entrée, par exemple avec scanf
, où %d
scanne un entier sous la forme d'un nombre décimal signé, mais par %i
défaut en décimal mais autorise également hexadécimal (s'il est précédé de 0x
) et octal (s'il est précédé de 0
).
Donc , 033
serait 27 avec , %i
mais 33 avec %d
.
printf
etscanf
.Ils sont identiques pour
printf
mais différents pourscanf
. Pourprintf
, à la fois%d
et%i
désigner un entier décimal signé. Pourscanf
,%d
et%i
signifie également un entier signé mais%i
interprète l'entrée comme un nombre hexadécimal si elle est précédée de0x
et octale si elle est précédée par0
et interprète autrement l'entrée comme décimale.la source
Il n'y a aucune différence entre les spécificateurs de format
%i
et%d
pourprintf
. Nous pouvons le voir en allant au projet de section standard C997.19.6.1
La fonction fprintf qui couvre également en ce quiprintf
concerne les spécificateurs de format et il est dit au paragraphe 8 :et comprend la puce suivante:
D'un autre côté car
scanf
il y a une différence,%d
supposons la base 10 tandis que l'%i
auto détecte la base. On peut le voir en allant à la section7.19.6.2
La fonction fscanf qui couvrescanf
en ce qui concerne spécificateur de format, au paragraphe 12 , il dit:et comprend les éléments suivants:
la source
Il n'y en a pas
printf
- les deux sont synonymes.la source
scanf()
chaîne de format comme le dit la réponse acceptée.