L'operatore di assegnamento (=) va da destra a sinistra, vale a dire valuta prima ci? che c'? a destra e il risultato lo assegna alla variabile di sinistra.
Valutiamo dunque ci? che c'? a destra: si tratta di una divisione tra interi e come tale produce un risultato intero; questo risultato intero viene quindi assegnato alla variabile di sinistra (a qualunque tipo appartenga).
Come risolvere dunque il tuo problema? (non ? un'anomalia!)
Il C fornisce il cosidetto operatore di conversione. Vediamo la sintassi, rifacendoci al tuo esempio:
float x = (float) a / b;
in questo modo, il compilatore effettuer? una temporanea conversione del valore di a, che da 5 viene trasformato in 5.0, o per meglio dire, da integer viene trasformato in float.
Ora, la divisione 5.0 / 2 non ? pi? una divisiona tra interi, pertanto produce un risultato di tipo float, che viene immagazzinato in x.
Ultima modifica effettuata da Zizzius il 30/05/2005 alle 0:22 |