Я пытаюсь выучить C, читая язык программирования C, 2-е издание. У меня есть некоторый опыт программирования, но не с C.
Сейчас я в главе 1. У меня есть следующий код:
float f;
for (f = 0.0; f <= 3; f += 1.1)
printf("A: %3f B: %6.2f\n", f, f + 0.15);
Он печатает вывод:
A: 0.000000 B: 0.15
A: 1.100000 B: 1.25
A: 2.200000 B: 2.35
Выглядит хорошо.
Теперь я изменяю printf следующим образом:
printf("A: %3d B: %6.2f\n", f, f + 0.15);
Новый вывод -
A: 0 B: 0.00
A: -1610612736 B: 0.00
A: -1610612736 B: -625777476808257557292155887552002761191109083510753486844893290688350183831589633800863219712.00
Что здесь происходит? Я ожидаю, что float будет преобразован в int, потому что я использовал% d, но это не то, что произошло. Кроме того, почему значение B также пошло не так? Что здесь произошло?