Поскольку вы указали %d
вместо %f
, то, что вы действительно видите, это двоичное представление d
в виде целого числа.
Кроме того, поскольку типы данных не совпадают, код фактически имеет неопределенное поведение.
EDIT:
Теперь, чтобы объяснить, почему вы не видите 2
:
float
повышается до double
в стеке. Тип double
имеет (в данном случае) 8 байтов. Однако, поскольку ваш printf
задает два целых числа (в данном случае оба 4 байта), вы видите двоичные представления 1.0
как тип double
. 2 не печатается, потому что он превышает 8 байтов, ожидаемых вашим printf
.