Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何在c++;用一个变量?_C++_Variables_Exponent - Fatal编程技术网

C++ 如何在c++;用一个变量?

C++ 如何在c++;用一个变量?,c++,variables,exponent,C++,Variables,Exponent,所以我意识到#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 在等式中添加星号,添加缺少的乘法(或您想要的乘法),并且在行尾应该有分号:

所以我意识到#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


在等式中添加星号,添加缺少的乘法(或您想要的乘法),并且在行尾应该有分号:

perfect = (pow(2,(num-1))) * (pow(2,num)-1) ;

添加缺少的乘法(或您想要的乘法),并且在行尾应该有分号:

perfect = (pow(2,(num-1))) * (pow(2,num)-1) ;

编译器不知道调用哪个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);
perfect=(pow(2.,(double)(num-1))<(pow(2.,(double)num-1);

那里可能有一些额外的强制转换,但它们不会造成任何影响。

编译器不知道要调用哪个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);
perfect=(pow(2.,(double)(num-1))<(pow(2.,(double)num-1);

<>可能会有一些额外的转换,但是它们不会伤害任何东西。

这些是C++中允许的 PUE()/<代码>函数。问题是,你的代码有一个int作为第一个参数,C++不知道是否将它提升为一个双或长双。
     double pow (      double base,      double exponent );
long double pow ( long double base, long double exponent );
      float pow (       float base,       float exponent );
     double pow (      double base,         int exponent );
long double pow ( long double base,         int exponent );
尝试输入
(double)2
,而不是只输入
2

perfect = (pow((double)2,(num-1))) * (pow((double)2,num)-1)

C++中允许使用的<>代码> PUE()>代码>函数。问题是,你的代码有一个int作为第一个参数,C++不知道是否将它提升为一个双或长双。

     double pow (      double base,      double exponent );
long double pow ( long double base, long double exponent );
      float pow (       float base,       float exponent );
     double pow (      double base,         int exponent );
long double pow ( long double base,         int exponent );
尝试输入
(double)2
,而不是只输入
2

perfect = (pow((double)2,(num-1))) * (pow((double)2,num)-1)
alex.m写道

“pow”(任何过载)采用浮动模式 点类型编号(单点、双点或双点) 长双精度)作为第一个 参数,而不是整数。这是 错误来自何处,因为 编译器无法猜出您想要的方式 要转换的长整数

试着写一个演员表情, 像这样:

代码块

c= pow((双倍)扫描次数已完成, 2);

因此,如果您尝试
pow((double)2,(num-1))
,它应该可以工作


有趣的是,当我在谷歌上输入它的开头时,“pow对重载函数的模棱两可的调用”作为建议的搜索出现了。

来自,alex.m写道

“pow”(任何过载)采用浮动模式 点类型编号(单点、双点或双点) 长双精度)作为第一个 参数,而不是整数。这是 错误来自何处,因为 编译器无法猜出您想要的方式 要转换的长整数

试着写一个演员表情, 像这样:

代码块

c= pow((双倍)扫描次数已完成, 2);

因此,如果您尝试
pow((double)2,(num-1))
,它应该可以工作



有趣的一点是,当我在谷歌上输入它的开头时,“pow对重载函数的模糊调用”作为建议的搜索出现了。

记住,你也可以用移位运算符写出2的整数幂:

int perfect = (1<<(num-1)) * ((1<<num) - 1);

请记住,还可以使用移位运算符写入2的整数幂:

int perfect = (1<<(num-1)) * ((1<<num) - 1);

完全忘记了所需的星号…但在实际代码中有一个分号…没有帮助想法完全忘记了所需的星号…但在实际代码中有一个分号…没有帮助想法我不认为它是num,因为这将导致它选择最后两个之一。我认为是2应该显式地转换成最后两个数据类型中的一个。从int到double的转换不会有任何影响?是的,你可以不转换num就走。@Jeff:也许效率会更高。实现2^5可能比实现2^5.0更快。将其视为x^int与x^double,而不是2(这是一个特殊的数字)。事实上,有两个版本似乎表明实现是不同的,因为在任何其他情况下,ints将自动升级为双倍,只有pow(X,double)版本。我不认为是num,因为这将导致它选择最后两个版本中的一个。我认为是2应该显式地转换成最后两个数据类型中的一个。从int到double的转换不会有任何影响?是的,你可以不转换num就走。@Jeff:也许效率会更高。实现2^5可能比实现2^5.0更快。将其视为x^int与x^double,而不是2(这是一个特殊的数字)。有两个版本的事实似乎表明,实现与其他任何情况下的不同,ints将自动升级为双倍版本,只有pow(X,double)版本。也许这是一个扩展。我有一个朋友正在和我交谈,他使用g++和linux,对他来说也很好…是的,是的!我知道!Linux更好,但我不能在Linux上玩那么多游戏,所以我只能使用windows。奇怪的是,这和g++一样有效。也许这是一个扩展。我有一个朋友正在和我交谈,他使用g++和linux,对他来说也很好…是的,是的!我知道!Linux更好,但我不能在Linux上玩那么多游戏,所以我只能使用windows。