bool calHit(double angle, double velocity) {
const double g = 9.80665;
double range;
range = ((velocity ^ 2)*sin(2 * angle)) / g;
}
这会返回一个错误,表示表达式必须具有整数或未整合的枚举类型。到目前为止的错误只是在速度上。
我没有投射任何数据类型或舍入。真的不知道为什么会这样。
答案 0 :(得分:2)
此代码中的问题是velocity ^ 2
:^
运算符不在C ++中进行指数化(相反,它执行按位异或)。相反,请写下velocity * velocity
或std::pow(velocity, 2)
。
错误来自于无法对带有int的double进行异或,因此velocity XOR 2
是不可能的,因为velocity
是双倍的。
答案 1 :(得分:0)
之前我也遇到过同样的问题。因为速度是双重类型。速度^ 2可能没有范围。因此,速度*速度可以解决问题。
int c;
int d;
int f = (c ^ 2 + d ^ 2);