Хорошо, первая 1 дает правильное значение, как и ожидалось.
Вторая - вы передаете float, когда он обрабатывает его как int (отсюда и "% d", который отображает типы данных int,немного сложно объяснить, почему, и поскольку это только начинается, я бы не стал беспокоиться о том, почему «% d» делает это, когда передал число с плавающей запятой), читая его неправильно, поэтому получая странное значение.(хотя это не мусорное значение).
В-третьих, он делает 16.0 / 3.0 целым числом, присваивая его типу данных int, в результате чего получается 5. Поскольку при создании числа с плавающей точкой int он удаляет десятичные дроби независимо от округления.
В четвертом правая часть (16/3) рассматривается как int, потому что у вас нет нуля .0 в конце.Он оценивает это, затем назначает 5 для числа с плавающей точкойТаким образом, объясняя вывод.