在 Xcode 4.5 (Mac) 下编译以下代码时,编译失败并显示以下错误消息:
call to 'pow' is ambiguous
为什么?谢谢!
#include <iostream>
#include <cmath>
#include <limits>
using namespace std;
int main()
{
cout << "\tSquare root calculator using an emulation the ENIAC's algorithm." << endl
<< endl;
long long m;
while ((cout << "Enter a positive integer:" << endl)
&& (!(cin >> m) || m < 0 || m > 9999999999)) //10-digit maxium
{
cout << "Out of range.";
cin.clear();
cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
}
again:
long long l = m;
//Find out how big the integer is and adjust k accordingly.
int order = -1;
long long temp = m;
do
{
temp /= 10;
order++;
} while (temp/10);
int k = order/2;
//Step 1
long long a = -1;
do
{
a+=2;
m -= a*pow(100,k);
} while (m >= 0);
while (k > 0)
{
k--;
//Step 2
if (m < 0)
{
a = 10*a+9;
for (;m < 0;a -= 2)
{
m += a*pow(100,k);
}
a += 2;
}
//Step 3
else
{
a = 10*a-9;
for(;m >= 0;a += 2)
{
m -= a*pow(100,k);
}
a -= 2;
}
}
//Step 4
cout << endl << "The square root of " << l << " is greater than or equal to "
<< (a-1)/2 << " and less than " << (a+1)/2 << "." << endl << endl;
while ((cout << "Enter a positive integer to calculate again, or zero to exit." << endl)
&& (!(cin >> m) || m < 0 || m > 9999999999))
{
cout << "Out of range.";
cin.clear();
cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
}
if (m > 0) goto again;
return 0;
}