imprimir - scanf dev c++
Lectura en valores dobles con scanf en c (5)
Intento leer 2 valores usando scanf () en C, pero los valores que el sistema escribe en la memoria no son iguales a mis valores ingresados. Aquí está el código:
double a,b;
printf("--------/n"); //seperate lines
scanf("%ld",&a);
printf("--------/n");
scanf("%ld",&b);
printf("%d %d",a,b);
Si ingreso 1 y 2, CMD devuelve un correcto, pero b = -858993460 Esto es lo que ya probé: usar float o int en lugar de doble, usar scanf_s, usar scanf ("% d o% f para% i o% li o% lf o% e o% g), usando fflush (stdin) para borrar el búfer del teclado, leyendo en b primero, intentando con todas las combinaciones posibles. Descubrí que hay un problema con la longitud del doble en el sistema operativo de 32 bits. de modo que se ve obligado a usar scanf ("% lf", & f) para leer en doble. No importa lo que haga, el segundo valor siempre es incorrecto.
Uso MS VS express 2012 para escritorio en el sistema operativo Windows 7 de 32 bits.
El especificador de formato en printf
debe ser %f
para los tipos de datos dobles, ya que los estilos de datos float
eventualmente se convierten en tipos de datos double
dentro de printf
.
No hay ninguna disposición para imprimir datos float
. Encuentre la discusión aquí: especificador de formato correcto para doble en printf
Está utilizando una secuencia de formato incorrecta para el double
, debe usar %lf
lugar de %ld
:
double a;
scanf("%lf",&a);
Por lo que sé, %d
significa decád que es número sin punto decimal. Si desea cargar el valor doble, use %lf
conversión (flotación larga). para printf sus valores son incorrectos por la misma razón, %d
se usa solo para números enteros (y posiblemente caracteres si sabe lo que está haciendo).
Ejemplo:
double a,b;
printf("--------/n"); //seperate lines
scanf("%lf",&a);
printf("--------/n");
scanf("%lf",&b);
printf("%lf %lf",a,b);
Usar %lf
te ayudará a resolver este problema.
Utilizar :
scanf("%lf",&doub)
Use el especificador de formato %lf
para leer un doble:
double a;
scanf("%lf",&a);
Wikipedia tiene una referencia decente para los especificadores de formato disponibles.
Deberá usar el especificador de formato %lf
para imprimir los resultados también:
printf("%lf %lf",a,b);