pow 函数 C++ 错误
pow function c++ error
我正在尝试为十进制到二进制转换器创建一个辅助函数,它会根据 2 的最高次方告诉我从哪一位开始。
这是我的代码:
int determineStart(int val){
int topval = 1;
int i = 0;
for(i = 0; val > 2 * topval; ++i){
topval = pow(2, i);
}
return topval;
}
我收到以下错误:
main.cpp:9: error: call of overloaded pow(int, int&) is ambiguous
我试过改变一些东西(比如放入一个 double
或一个单独的变量作为 pow()
的第二个参数,使 topval
成为 double
, 等) 但似乎无法让它工作。
我做错了什么?
没有pow()
此类参数类型的函数。它可以是 (float, int)
、(double, int)
或 (long double, int)
。如果你用 (int, int)
调用它,编译器不知道上面使用的是哪种类型。最简单的解决方案是:
pow(2.0, i)
编辑:
我假设您使用来自 <cmath>
或 <math.h>
的标准 pow()
定义
获得 2 的幂的最简单(也是最快)的方法是移动 - CPU 无论如何都使用二进制,因此它可以为您在末尾添加几个额外的零。
所以你应该写 (1 << i)
.
而不是 pow(2, i)
转换可能是你的错误:你可以轻松地将 int 转换为 double 或 float。
试试这个:
pow(2.0, i)
它会表现得像:
pow((double)(2), i)
我正在尝试为十进制到二进制转换器创建一个辅助函数,它会根据 2 的最高次方告诉我从哪一位开始。
这是我的代码:
int determineStart(int val){
int topval = 1;
int i = 0;
for(i = 0; val > 2 * topval; ++i){
topval = pow(2, i);
}
return topval;
}
我收到以下错误:
main.cpp:9: error: call of overloaded pow(int, int&) is ambiguous
我试过改变一些东西(比如放入一个 double
或一个单独的变量作为 pow()
的第二个参数,使 topval
成为 double
, 等) 但似乎无法让它工作。
我做错了什么?
没有pow()
此类参数类型的函数。它可以是 (float, int)
、(double, int)
或 (long double, int)
。如果你用 (int, int)
调用它,编译器不知道上面使用的是哪种类型。最简单的解决方案是:
pow(2.0, i)
编辑:
我假设您使用来自 <cmath>
或 <math.h>
pow()
定义
获得 2 的幂的最简单(也是最快)的方法是移动 - CPU 无论如何都使用二进制,因此它可以为您在末尾添加几个额外的零。
所以你应该写 (1 << i)
.
pow(2, i)
转换可能是你的错误:你可以轻松地将 int 转换为 double 或 float。 试试这个:
pow(2.0, i)
它会表现得像:
pow((double)(2), i)