¿Por qué printf imprime un valor aleatorio con un especificador de formato entero y flotante

Escribí un código simple en una máquina de 64 bits.

int main() {
    printf("%d", 2.443);
}

Entonces, así es como se comportará el compilador. Identificará el segundo argumento para que sea doble, por lo que empujará 8 bytes en la pila o posiblemente solo usará registros en todas las llamadas para acceder a las variables.%d espera un valor entero de 4 bytes, por lo que imprime un valor de basura.

Lo interesante es que el valor impreso cambia cada vez que ejecuto este programa. Entonces, ¿qué está pasando? Esperaba que imprimiera el mismo valor de basura cada vez que no fueran diferentes cada vez.

Respuestas a la pregunta(2)

Su respuesta a la pregunta