leer imprimir float dev datos cadenas c scanf conversion-specifier

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);