打印函数会返回意外值,为什么?

时间:2016-05-07 03:19:46

标签: c++ function

我正在将一个值传递给一个将Celsius转换为Fahrenheit的函数,但是控制台会输出一个错误代码,当我谷歌它时,它不会显示任何内容。

// 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;
}

打印到控制台:

Freezing Point: 00A31627C

我做错了什么?

5 个答案:

答案 0 :(得分:9)

这是因为您正在打印该功能而不是摄氏度

控制台中的

cout << "Freezing Point: " << fToC << "C" << endl;显示该函数的内存地址。

您应该执行以下操作:

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

答案 1 :(得分:8)

  

但是控制台会输出一个错误代码,当我使用它时,它不会显示任何内容。

这不是错误代码。

你错过了调用函数的括号:

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

而是打印功能地址。

你可能打算打印

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

因为您已通过调用函数计算了该值。

答案 2 :(得分:7)

那么,

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

为您提供流行测验:什么是&#34; fToC&#34;?为什么,它是你的功能,你看到的结果是你的功能代码所在的无意义的内部存储器地址。

你可能想写:

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

不幸的是,计算机只会执行您要求它执行的操作,而不是您希望它执行的操作。

答案 3 :(得分:7)

这是错误的:

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

您将fToC传递给控制台,因此它会打印该功能的地址。删除fToC并写入摄氏度。

答案 4 :(得分:6)

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

不正确。您无法在此类cout中输出功能名称,希望它能为您提供所需的结果。它将打印出函数存储的地址。但是,您可以调用该功能

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

因为fToC(fahrenheit)实际上是float,带有你给它的参数,所以你应该得到你想要的答案而不是函数地址。你也可以使用:

cout << "Freezing Point: " << centigrade << "C" << endl;
您在上一行中定义的