Warum druckt printf zufällige Werte mit dem Formatbezeichner float und integer?

Ich habe einen einfachen Code auf einer 64-Bit-Maschine geschrieben

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

So wird sich der Compiler verhalten. Das zweite Argument wird als Double identifiziert, daher werden 8 Bytes auf dem Stack abgelegt, oder es werden möglicherweise nur aufrufübergreifende Register verwendet, um auf die Variablen zuzugreifen.%d erwartet einen 4-Byte-Integer-Wert, gibt also einen Müllwert aus.

Interessant ist, dass sich der gedruckte Wert jedes Mal ändert, wenn ich dieses Programm ausführe. Also, was ist los? Ich habe erwartet, dass es jedes Mal den gleichen Müllwert ausgibt, nicht jedes Mal einen anderen.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage