In c il programmatore(utente) non può sovraccaricare gli operatori, ma di fatto tutti gli operatori predefiniti sono sovraccarichi, altrimenti non si spiega perché sia possibile fare: float+float=float e int+int=int; due operazioni evidentemente differenti che vengono chiamate entrambe con il simbolo " + ", naturalmente il compilatore in base agli argomenti esegue la somma tra reali o quella tra interi, senza ambiguità.
Per quanto riguarda int/int=float hai ragione, l'operatore binario "/" se ha come parametri due interi restituisce un'intero. E ciò è in perfetto accordo con la soluzione del problema che ho proposto.
Infatti 0/0=intero, se vogliamo la forma indeterminata NaN dobbiamo convertirlo esplicitamente in un float, quindi:
0/0 (float) = float = nan.