尝试用C ++编写风寒因子方程式,我的方程和返回值都有问题。
这是出现错误的函数。
void eqfunction(int temperature, int windspeed){
int windindex;
windindex = 35.74 + (0.6215 * temperature);
windindex = windindex - (35.75 * windspeed^0.16);
windindex = windindex + ((0.4275 * temperature)*windspeed^0.16);
return windindex;
}
编辑 :(编辑)按照答案中给出的建议修复功能后,会出现新的错误:
float windChillFactor(float temperature, float windspeed){
float windindex = 35.74f + 0.6215f * temperature;
windindex -= 35.75f * std::pow(windspeed, 0.16f);
windindex += 0.4275f * temperature * std::pow(windspeed, 0.16f);
return windindex;
}
我知道有两件事我做错了我只是不知道如何解决它们。显然它是“^”和我的返回值。如何为风速创建0.16的正方形? 我将如何创建正确的windindex返回值?
这些是我的错误
1>c:\users\ryan\desktop\final.cpp\final.cpp\final project.cpp(18):
warning C4244: 'argument' : conversion from 'int' to 'float',
possible loss of data
1>c:\users\ryan\desktop\final.cpp\final.cpp\final project.cpp(18):
warning C4244: 'argument' : conversion from 'int' to 'float',
possible loss of data
1>c:\users\ryan\desktop\final.cpp\final.cpp\final project.cpp(18):
error C2440: '=' : cannot convert from 'void' to 'int'
1> Expressions of type void cannot be converted to other types
1>c:\users\ryan\desktop\final.cpp\final.cpp\final project.cpp(22):
error C2556: 'float eqfunction(float,float)' : overloaded function differs
only by return type from 'void eqfunction(float,float)'
1> c:\users\ryan\desktop\final.cpp\final.cpp\final project.cpp(6) :
see declaration of 'eqfunction'
1>c:\users\ryan\desktop\final.cpp\final.cpp\final project.cpp(22):
error C2371: 'eqfunction' : redefinition; different basic types
1> c:\users\ryan\desktop\final.cpp\final.cpp\final project.cpp(6) :
see declaration of 'eqfunction'
答案 0 :(得分:5)
虽然您没有包含编译器给出的错误消息(您应该总是这样做),但这是我看到的错误:
void eqfunction(int temperature, int windspeed){
void
函数是不返回任何内容的函数,在某些其他编程语言中也称为“过程”。由于您想要返回实数,您可能希望使用float
(还有double
和long double
,但在日常使用中,float
通常足够精确)。 int
而是float
int windindex;
int
来存储中间结果,则可能会丢失重要信息(将实际类型分配给整数类型时,会丢弃小数部分);因此,请使用int
float
windindex = 35.74 + (0.6215 * temperature);
windindex = windindex - (35.75 * windspeed^0.16);
windindex = windindex + ((0.4275 * temperature)*windspeed^0.16);
^
是C ++中的按位异或运算符。 power函数是C ++中的库函数,即来自std::pow(x,y)
标题cmath
a = a + something
,a = a - something
,a = a * something
和a = a / something
可以简化为a += something
,同样适用于其他人1.0
形式的文字表示double
值,1.0f
形式的文字表示float
值 return windindex;
}
因此,考虑到这些要点,这可能更适合您的需求:
#include <cmath>
float windChillFactor(float temperature, float windspeed){
float windindex = 35.74f + 0.6215f * temperature;
windindex -= 35.75f * std::pow(windspeed, 0.16f);
windindex += 0.4275f * temperature * std::pow(windspeed, 0.16f);
return windindex;
}
请注意,由于运算符优先级,*
和/
会在+
和-
之前进行评估,因此不需要括号。
答案 1 :(得分:2)
这可能是错误:
windspeed^0.16
在C ++中,^
是按位异或(XOR)运算符。
您可能意味着将windspeed
提升为0.16
的力量,您可以使用std::pow
:
除此之外,你的函数应该返回void以外的东西。它看起来应该返回float或double,而windindex
不应该是int
,而是一些浮点类型。最后,您可以使用+=
和-=
:
#include <cmath> // for std::pow
double eqfunction(int temperature, int windspeed)
{
double windindex = 35.74 + 0.6215 * temperature;
windindex -= 35.75 * std::pow(windspeed, 0.16);
windindex += 0.4275 * temperature * std::pow(windspeed, 0.16);
return windindex;
}
答案 2 :(得分:1)
double eqfunction(int temperature, int windspeed)
{
double windindex = 35.74 + 0.6215 * temperature;
windindex -= 35.75 * std::pow(windspeed, 0.16);
windindex += 0.4275 * temperature * std::pow(windspeed, 0.16);
return windindex;
}
答案 3 :(得分:0)
double eqfunction(int temperature, int windspeed){
double windindex;
windindex = 35.74 + (0.6215 * temperature);
windindex = windindex - (35.75 * pow(windspeed,0.16));
windindex = windindex + ((0.4275 * temperature)*pow(windspeed,0.16));
return windindex;
}