2011-01-03 14 views
5

ho questo semplice codice:restituire un tipo di galleggiante dal funzione nel c

int main() 
{ 
    float x = foo(); 
    printf("returned value: %f", x); 
    return 0; 
} 

float foo() 
{ 
    return 5; 
} 

quando ho eseguito il codice, l'output è: "valore restituito: -858.993.472,000 mila"

può qualcuno si prega di spiegandomi perché il valore restituito non è 5,000000?

risposta

18

Nel punto in cui si chiama la funzione non è disponibile alcun prototipo. Ciò significa che si presume che la funzione restituisca int. Aggiungi un prototipo prima del punto in cui innanzitutto chiami la funzione.

float f(void); 
+0

Grazie! Ho passato un'ora su questo ... – MOP

+1

... o definisco 'foo()' * prima di * 'main()'. @MOP: dovresti modificare le impostazioni del livello di avviso per il tuo compilatore; la maggior parte dei compilatori avrà avvertito di non sopprimere o ignorare gli avvisi. Suggerisco di impostare anche gli avvisi come errori (GCC: -Wall -Werror, VC++ \ W4 \ Wx). – Clifford

+0

@Clifford: ... e vorrei che anche quella definizione di funzione sia un prototipo. –

Problemi correlati