gpt4 book ai didi

c++ - 使用 pow() 会出错

转载 作者:太空狗 更新时间:2023-10-29 23:30:53 25 4
gpt4 key购买 nike

请看下面的代码

#include <iostream>
#include <iomanip>
#include <cmath>

using namespace std;

int main()
{
//int side1 = 0;
//int side2 = 0;
//int rightSide = 0;

cout << "Right Side" << setw(10) << "Side1" << setw(10) << "Side2" << endl;

for(int i=1;i<=500;i++)
{
//side1++;
//cout << side1 << endl;

for(int a=1;a<=500;a++)
{
//side2++;
//cout << "side 2 " << side2 << endl;

for(int c=1;c<=500;c++)
{
//rightSide++;
int rightSideSqr = pow(c,c);
int side1Sqr = pow(i,i);
int side2Sqr = pow(a,a);

if(rightSideSqr == (side1Sqr+side2Sqr))
{
cout << rightSideSqr << setw(15) << i << setw(10) << a << endl;
}


}
}
}
}

这给出了一个错误“PythagorialTriples.cpp:28: 错误:调用重载的 `pow(int&, int&)' 是不明确的”。如果我只是使用像 i*i 这样的手动电源而不是方法,就不会发生这种情况。有人可以解释一下为什么会这样吗?无论如何,我是 C++ 的新手。谢谢

最佳答案

pow 有多个重载在 <cmath> 中定义.在您的代码中,这 3 个都同样有效,因此编译器无法选择正确的一个:

        pow(float, int);
pow(double, int);
pow(long double, int);

最简单的解决方案是使用 static_cast在第一个参数上,消除任何歧义。例如

int side1Sqr = pow( static_cast<double>(i) ,i );
int side2Sqr = pow( static_cast<double>(a) ,a );

关于c++ - 使用 pow() 会出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12500656/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com