Regole del forum
1) Citare in modo preciso il linguaggio di programmazione usato.
2) Se possibile portare un esempio del risultato atteso.
3) Leggere attentamente le risposte ricevute.
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.
La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
Cosi', a un aveloce lettura vedo due errori:
1. 9/5 fa 1, essendo una divisione fra interi. Devi dare 9.0/5.0. In realta' basta 9.0/5, oppure 9/5.0.
2. Nella printf passi un double, ma metti un %d. O fai un cast a in di quanto ritornato da fahrenheit(), oppure, melgio, metti un %f, al posto del secondo %d.
robbybby ha scritto:Offtopic:1. 9/5 fa 1, essendo una divisione fra interi. Devi dare 9.0/5.0. In realta' basta 9.0/5, oppure 9/5.0.
Offtopic:
mi confermi che il seguente errore è dovuto all'inferenza dei tipi del compilatore?
ovvero che tra due operandi interi sceglie di algoritmo la divisione int/int->int mentre specificando un double il compilatore esegue un cast implicito
(int->double)/double->double
giusto??? un po di ruggine sui compilatori comincia a manifestarsi
@Blizzard: certo. Se il compilatore vede due interi, applica la divisione fra interi.
Se vede un intero e un double, eleva tutta l'espressione a double.
Se poi pensi al C++, dove puoi definire l'overloading dell'operatore / per un tipo definito dall'utente, le cose si fanno ancora piu' interessanti. Ma qui andiamo molto OT.