作为编码初学者,我正在准备我的 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/