表达式必须具有整数或未整合的枚举类型

时间:2015-08-10 11:05:28

标签: c++

bool calHit(double angle, double velocity) {
const double g = 9.80665;
double range;
    range = ((velocity ^ 2)*sin(2 * angle)) / g;


}

这会返回一个错误,表示表达式必须具有整数或未整合的枚举类型。到目前为止的错误只是在速度上。

我没有投射任何数据类型或舍入。真的不知道为什么会这样。

2 个答案:

答案 0 :(得分:2)

此代码中的问题是velocity ^ 2^运算符不在C ++中进行指数化(相反,它执行按位异或)。相反,请写下velocity * velocitystd::pow(velocity, 2)

错误来自于无法对带有int的double进行异或,因此velocity XOR 2是不可能的,因为velocity是双倍的。

答案 1 :(得分:0)

之前我也遇到过同样的问题。因为速度是双重类型。速度^ 2可能没有范围。因此,速度*速度可以解决问题。

int c;
int d;
int f = (c ^ 2 + d ^ 2);