Je ne suis pas sûr de ce que je fais mal, mais je ne parviens pas à lire un double de la console. Lire un livre fonctionne bien pour une raison quelconque. J’utilise Xcode.
double n1; // get input from the user printf("Enter first number: "); scanf("%f", &n1); printf("%f", n1);
Ce sera toujours imprimer 0, peu importe ce que je saisis.
%f
recherche un float, pas un double. Si vous souhaitez utiliser un double, utilisez le format %lf
.
Comme côté intéressant, clang prévient cela sans aucun drapeau supplémentaire, gcc 4.6 ne le préviendra même pas avec -Wall -Wextra -pedantic
.
%f
est destiné à une single precision floating-point value
(float). Le spécificateur de format dont vous avez besoin est %lf
, ce long precision floating-point value
signifie long precision floating-point value
(double).
Son tout sur la façon dont les données sont stockées en mémoire.
Laissez-moi d’abord dire que combien de temps et float sont stockés en mémoire.
Donc ici vous demandez de prendre l’entrée en tant que %f
(ie float, qui est de 4 octets mais le double est de 8 octets), donc le compilateur prend l’entrée de la console et le convertit en type float et le stocke à l’emplacement de mémoire (qui est en fait de 8 octets). ) de variable (ici n1
).