¿Por qué la impresión 1 como número de coma flotante imprime basura en la programación en C?

Gracias por el A2A!

Considere la siguiente pieza de código:

flotador a = 1;
printf (“% f”, a);

Salida: 1.000000

Y ahora este código:

printf (“% f”, 1);

Salida: valor de basura

La razón de esto es que cuando una variable se declara como flotante, el compilador sabe que cualquier valor que contenga esa variable, contendrá la parte decimal y la parte fraccionaria. Si no se proporciona la parte fraccionaria, se supone que es un número entero (todavía un número de coma flotante) con la parte fraccionaria 0. En la instrucción printf , se especifica el especificador de formato “% f” y el tipo de coincidencia y la salida esperada. Ahora, llegando al segundo caso, la salida será un valor basura ya que el especificador de formato es “% f”, usado para números de coma flotante, y el valor es 1 (puramente entero). Aquí es al revés de lo que sucedió en el primer caso. El compilador mira primero el valor (1) y luego detecta su tipo (int). Por lo tanto, la coincidencia no se produce y se muestra el valor de basura.