>А что бинго? Что нашли? компилируй свою программу с -Wall, тебе gcc расскажет всё. ;) Вообще, возьми это за правило: экономит время до жути.
Если вкратце, на x86 sizeof (float) == 8, а ты в printf'е кладёшь всего четыре (sizeof (int)) байта нулей, то есть младшие байты мантиссы флоата. Ну а printf-то об этом ничего не знает, и берёт из стека все восемь байт. А что там за старшие байты, предсказать сложно. Видать при определённых обстоятельствах ветвление идёт несколько иначе (в твоём коде, или в библиотечном), и в результате под твоими нулями оказывается константа, которую я в коде продемонстрировал.