Dlaczego printf drukuje losową wartość ze specyfikatorem formatu float i integer

Napisałem prosty kod na komputerze 64-bitowym

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

Tak będzie się zachowywał kompilator. Identyfikuje drugi argument jako podwójny, dlatego wypchnie 8 bajtów na stosie lub po prostu użyje rejestrów w połączeniach, aby uzyskać dostęp do zmiennych.%d oczekuje 4-bajtowej wartości całkowitej, dlatego wypisuje pewną wartość śmieci.

Interesujące jest to, że wartość drukowała zmiany za każdym razem, gdy wykonuję ten program. Co się dzieje? Spodziewałem się, że za każdym razem wydrukuje tę samą wartość śmieci, a nie inne.

questionAnswers(2)

yourAnswerToTheQuestion