Quel est le spécificateur de format pour double
dans printf? Est-il %f
ou est-il %lf
? Je crois que c' %f
mais je ne suis pas sûr.
Exemple de Code
#include <stdio.h>
int main()
{
double d =1.4;
printf("%lf", d); //is this wrong?
}
Quel est le spécificateur de format pour double
dans printf? Est-il %f
ou est-il %lf
? Je crois que c' %f
mais je ne suis pas sûr.
Exemple de Code
#include <stdio.h>
int main()
{
double d =1.4;
printf("%lf", d); //is this wrong?
}
"%f" est la (ou au moins "un") format correct pour une chambre double. Il n' est pas de format pour un float
, parce que si vous essayez de passer un float
de printf
, ça va être promu double
avant printf
le reçoit. "%lf" est aussi acceptable en vertu de la norme actuelle -- l
est spécifié comme n'ayant aucun effet si elle est suivie par l' f
indicateur de conversion (entre autres).
Étant donné le C99 standard (à savoir, la N1256 projet), les règles dépendent de la fonction type: fprintf (printf, sprintf, ...) ou de scanf.
Voici les parties pertinentes extraites:
Avant-propos
Cette deuxième édition annule et remplace la première édition, la norme ISO/IEC 9899:1990, modifiée et corrigée par l'ISO/IEC 9899/COR1:1994, ISO/IEC 9899/AMD1:1995, et la norme ISO/IEC 9899/COR2:1996. D'importants changements à partir de la précédente édition comprennent:
%lf
indicateur de conversion autorisés enprintf
7.19.6.1 L'
fprintf
fonction7 Les modificateurs de longueur et de leurs significations sont les suivantes:
l (apl) Spécifie que (...) n'a aucun effet sur une suite a, a, e, E, f, F, g, ou G indicateur de conversion.
L Spécifie qu'une suite a, a, e, E, f, F, g, ou G indicateur de conversion s'applique à un long double argument.
Les mêmes règles spécifiées pour fprintf
s'appliquent pour l' printf
, sprintf
et des fonctions similaires.
7.19.6.2 L'
fscanf
fonction11 Les modificateurs de longueur et de leurs significations sont les suivantes:
l (apl) Spécifie que (...) qu'une suite a, a, e, E, f, F, g, ou G indicateur de conversion s'applique à un argument de type pointeur sur double;
L Spécifie qu'une suite a, a, e, E, f, F, g, ou G de conversion rédacteur de devis s'applique à un argument de type pointeur à long double.
12 La conversion des prescripteurs et leurs significations sont les suivantes: a,e,f,g Correspond à un éventuellement signé nombre à virgule flottante (...)
14 La conversion des prescripteurs A, E, F, G et X sont aussi valables et se comportent de la même tant que, respectivement, un, e, f, g, et x.
La longue histoire courte, fprintf
la suite des prescripteurs et des types correspondants sont précisés:
%f
-> double%Lf
-> long double.et pour fscanf
il est:
%f
-> float%lf
-> double%Lf
-> long double.%Lf
(notez la majuscule L
) est le spécificateur de format pour les long double.
Brut doubles
, %e
, %E
, %f
, %g
ou %G
le fera.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.