所以我意识到#include是必要的,并且有一个pow(x,y),其中x ^ y可以工作......但是当我尝试使用pow(2,(num-1))时,它踢回了一个错误...
errorC2668:'pow':对重载函数的模糊调用
我的代码行如下
perfect = (pow(2,(num-1))) * (pow(2,num)-1);
有什么建议?
提前致谢
编辑:
num确实声明为int.
num确实有一个值,从1开始并转到UINT_MAX
方程式中添加了星号
编译器不知道要调用哪个pow()函数.此处列出的重载提供以下列表:
float pow ( float base, float exponent ); double pow ( double base, double exponent ); long double pow ( long double base, long double exponent ); float pow ( float base, int exponent ); double pow ( double base, int exponent ); long double pow ( long double base, int exponent );
编译器不会猜测要使用哪一个.使用强制转换使其显式化.
perfect = (pow(2.,(double)(num-1))) < (pow(2.,(double)num)-1);
那里可能会有一些额外的演员,但他们不会伤害任何东西.