Por que printf imprime o valor aleatório com o especificador de formato float e inteiro
Eu escrevi um código simples em uma máquina de 64 bits
int main() {
printf("%d", 2.443);
}
Então, é assim que o compilador se comportará. Ele irá identificar o segundo argumento para ser um duplo, portanto, ele vai empurrar 8 bytes na pilha ou, possivelmente, apenas usar registradores em chamadas para acessar as variáveis.%d
espera um valor inteiro de 4 bytes, portanto, imprime algum valor de lixo.
O interessante é que o valor impresso muda toda vez que eu executo este programa. Então, o que está acontecendo? Eu esperava que ele imprimisse o mesmo valor de lixo toda vez que não fosse sempre diferente.