Sto cercando di imparare C leggendo C Programming Language, 2nd Edition. Ho una certa esperienza di programmazione, ma non con C.Cosa succede a una variabile mobile quando% d è usato in una printf?
Sono attualmente nel Capitolo 1. Ho il seguente codice:
float f;
for (f = 0.0; f <= 3; f += 1.1)
printf("A: %3f B: %6.2f\n", f, f + 0.15);
esso stampa l'output:
A: 0.000000 B: 0.15
A: 1.100000 B: 1.25
A: 2.200000 B: 2.35
Sembra a posto
Ora cambiare il printf come segue:
printf("A: %3d B: %6.2f\n", f, f + 0.15);
La nuova uscita è
A: 0 B: 0.00
A: -1610612736 B: 0.00
A: -1610612736 B: -625777476808257557292155887552002761191109083510753486844893290688350183831589633800863219712.00
cosa sta succedendo qui? Mi aspetto che il float sia convertito in int perché ho usato% d ma non è quello che è successo. Inoltre, perché il valore B è andato storto? Cosa è successo a f qui?
Non hai chiesto di convertirlo in int, hai detto che ** era ** un int! Immondizia, spazzatura. –