4

所以我正在编写一些代码,需要将函数的返回值提高到一定的幂。我最近发现使用 '^' 运算符进行求幂是没有用的,因为在 C++ 中它实际上是一个 XOR 运算符或类似的东西。现在这是我要编写的代码:

int answer = pow(base, raisingTo(power));


现在谁能告诉我这是否正确?我将解释代码。正如你们都知道的那样,我已经声明了一个 int 变量答案,并将其初始化为任何名为“base”的变量的值,提升为作用于任何其他名为“power”的变量的 raiseTo() 函数的返回值。当我这样做时(并且我在 Visual C++ 2010 速成版中编辑和编译我的代码),在单词 'pow' 下出现一个红色破折号,并且出现错误消息:“多个重载函数 'pow' 的实例与参数匹配list"

有人可以帮我解决这个问题吗?你们能否也向我解释一下整个 pow() 函数是如何工作的,因为坦率地说 www.cplusplus.com 的引用有点令人困惑,因为我仍然只是一个初学者!

4

2 回答 2

6

文档已经非常明确地说明了这一点:

pow(int, int)过载不再可用。如果您使用此重载,编译器可能会发出 C2668 [EDIT: That's the error you get]。为避免此问题,请将第一个参数强制转换为 double、float 或 long double。

此外,要计算基本功率,您只需编写

pow(base, power)

并带有上述提示:

int result = (int) pow((double)base, power);
于 2012-02-18T23:07:02.930 回答
0

pow() 函数返回 adouble或 a float,因此第一步是更改answer为其中一个。其次,raisingTo()返回的是什么。除非您正在做一些不明显的事情,否则您不需要这样做,但它仍然可以工作。doubles此外,根据this,两个论点都应该是。

于 2012-02-18T23:11:50.353 回答