2016-05-07 16 views
6

Ich übergebe einen Wert in eine Funktion, um Celsius in Fahrenheit zu konvertieren, aber die Konsole gibt einen Fehlercode aus, der nichts bringt, wenn ich ihn google.Das Drucken einer Funktion gibt einen unerwarteten Wert zurück, warum?

// Function Declarations 
float fToC(float degreesF = 32.0); 

int main() { 
    float fahrenheit = 10; 
    float centigrade = 10; 

    centigrade = fToC(fahrenheit); 
    cout << "Freezing Point: " << fToC << "C" << endl; 

    return 0; 
} 


// Function Defintions 
float fToC(float degreesF) { 
    float degreesC = ((5.0/9.0)*(degreesF - 32)); 
    return degreesC; 
} 

Dies druckt in die Konsole:

Freezing Point: 00A31627C 

Was habe ich falsch gemacht?

Antwort

9

Es ist, weil Sie die Funktion ausdrucken und nicht Grad Celsius.

cout << "Freezing Point: " << fToC << "C" << endl; In der Konsole wird die Speicheradresse der Funktion angezeigt.

Sie sollten so etwas tun:

cout << "Freezing Point: " << centigrade << "C" << endl;

7

Nun,

cout << "Freezing Point: " << fToC << "C" << endl; 

Pop Quiz für Sie: Was ist "FTOC" ?. Warum, es ist Ihre Funktion, und was Sie als Ergebnis sehen, ist die sinnlose interne Speicheradresse, in der der Code Ihrer Funktion lebt.

Sie wahrscheinlich zu schreiben bedeutete:

cout << "Freezing Point: " << centigrade << "C" << endl; 

Leider ein Computer nur das, was Sie es nicht, sagen Sie zu tun, und nicht das, was Sie wollen, es zu tun.

8

aber die Konsole druckt einen Fehlercode, der nichts bringt, wenn ich es google.

Das ist kein Fehlercode.

Sie fehlt die Klammer eine Funktion aufzurufen:

cout << "Freezing Point: " << fToC(farenheit) << "C" << endl; 
           // ^^^^^^^^^^^ 

die Funktion Adresse statt gedruckt wird.


Sie bedeutete wahrscheinlich durch den Aufruf der Funktion

cout << "Freezing Point: " << centigrade << "C" << endl; 

wie Sie bereits den Wert berechnet zu drucken.

7

Das ist falsch:

cout << "Freezing Point: " << fToC << "C" << endl; 

Sie FTOC an die Konsole weitergeben, und so druckt er die Adresse der Funktion. Entferne fToC und schreibe Centigrade.

6
cout << "Freezing Point: " << fToC << "C" << endl; 

ist nicht korrekt. Sie können eine Funktion Name in einer cout nicht so ausgeben und hoffen, dass es Ihnen das gewünschte Resultat gibt. Es wird stattdessen die Adresse ausgedruckt, unter der die Funktion gespeichert ist.Sie können jedoch Aufruf die Funktion als

cout << "Freezing Point: " << fToC(fahrenheit) << "C" << endl; 

weil FTOC (Fahrenheit) ist eigentlich ein float, mit dem Parameter, den Sie es gab, so dass Sie die Antwort erhalten, sollten Sie anstelle der Funktionsadresse möchten. Sie könnten auch einfach verwenden:

cout << "Freezing Point: " << centigrade << "C" << endl; 

die Sie in der vorherigen Zeile definiert haben.

+0

_ "Sie können keinen Funktionsnamen in einem Cout wie diesem ausgeben." _ Nun, Sie können. Wie Sie sehen, drucken Sie die Funktionen Adresse. –

+0

Ja, schlecht formuliert – mojo1mojo2

Verwandte Themen