Przede wszystkim, co rozumiesz jako poprawny wynik? Podałeś tylko kawałek kodu o wątpliwej sensowności, z którego nic nie wynika.
int i float mają różne kodowania (najcześciej U2 dla int oraz IEEE 754 single dla float).
int 5 binarnie wyglada tak:
00000000000000000000000000000101
Interpretując to jako float dostajesz dodatnią liczbę zdenormalizowaną o wartości 5 * 2**(-149) (** oznacza potęgowanie), dodając dwie takie liczby do siebie dostaniesz 10 * 2**(-149), która też, z powodu małej wartości, jest zdenormalizowana; szczęśliwym zbiegiem okoliczności(wykładnik nadal zerowy) po zinterpretowaniu jej reprezentacji binarnej jako int otrzymasz 10