c++ - "Cannot convert parameter 1 from double to float"虽然没有改变参数

标签 c++

作为编码初学者,我正在准备我的 C 考试并且正在做一个练习,我必须编写一个应该计算 sinh x 的程序......当我以正常方式编写时它工作正常并计算出正确的答案,但是当我将我的函数从按值调用更改为按引用调用时,我得到了一个错误“无法将参数 1 从 double 转换为 float ”...为什么我得到它以及在使用该值时我应该考虑什么? 在这里你可以看到我的代码:)

    #include "stdafx.h"
#include "math.h"
#include "iostream"
float e=2.71828;
using namespace std;


float sinhyp (float *x)
{

    return (0.5*(pow(e,*x)-pow(e,(-1)*(*x))));


}



int _tmain(void)
{

        float erg=sinhyp(15.0);
        printf("%f \n", erg);


    system ("Pause");
    return 0;
}

感谢您的建议/帮助;)

最佳答案

C 没有引用调用。当您将函数参数的类型从 float 更改为 float * 时,您必须更改调用方以匹配。您的函数现在需要一个指针,因此您必须提供一个指针。例如,此调用将起作用:

float fifteen = 15.0;
float erg=sinhyp(&fifteen);

& 运算符是关键。它产生一个指针值,指向包含值 15.0 的变量。

关于c++ - "Cannot convert parameter 1 from double to float"虽然没有改变参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48791653/

相关文章:

c++ - 标记 int unsigned 的编译器优化?

c++ - 为什么在这种情况下删除了祖 parent 的构造函数?

c++ - 在 MyVector 中实现写时复制习惯用法

c++ - QWidget::createWindowContainer 的绘图错误和崩溃

c++ - 当我们使用 atexit() 时,不会为本地对象调用析构函数

c++ - Qt 4.7 - 工具提示和 QComboBox 弹出窗口在 OS X 10.12 下出现空白

c++ - 对重载函数的模糊调用 - log 与 ptrdiff_t

c++ - 如何在 C++ 命令行界面程序中运行 COM (.ocx) 对象。 (VS2017)

C++模板;部分特化实现

c++使用指针的自定义矩阵模板