2009-10-11 83 views
0

可以使用power函数来计算pow(200,200)等非常大的值的功率。 也可以用于很长的长整型值... pow(long long int,long long int)。g ++编译器中包含的g ++功能函数

我收到此错误 /sources/tested.cpp:在函数 '廉政的main()':

/sources/tested.cpp:16:错误:重载“战俘的调用(长长整型&,长长诠释&)”不明确

/usr/include/bits/mathcalls.h:154:注:候选是:双POW(双,双)

/usr/lib中/ GCC/i486-linux/4.0.1 /../../../../include/C++/4.0.1/cmath:360: 注意:long double std :: pow(long double,int)

/usr/lib/gcc/i486-linux/4.0.1/../../../../include/c++/4.0.1/cmath:356:注意:浮动的std :: POW (浮动,INT)

/usr/lib/gcc/i486-linux/4.0.1/../../../../include/c++/4.0.1/cmath:352:注意: double std :: pow(double,int) /usr/lib/gcc/i486-linux/4.0.1/../../../../include/c++/4.0.1/cmath:348:注意:long double std :: pow(long double,long double)

/usr/lib/gcc/i486-linux/4.0.1/../../../../include/c++/ 4.0.1/cmath:344:note:float std :: pow(float,float)

回答

4

如果你想要做任意p重新计算数学,你需要为它获得一个图书馆。很可能,您的平台没有足够大的数据类型来实现本地化。检查出GNU MP

+1

+1,看起来这就是他想要做的 – orip 2009-10-11 21:09:36

1

正如您从错误消息中看到的那样,没有pow函数适用于两个long long int值。编译器会尝试自动将long long int值转换为其他值(doublelong等)。但它不能明确地决定采取哪种功能。

不能使用标准pow函数来计算非常大的数字,如pow(200, 200),因为结果不会在pow函数定义的任何数据类型适合 - 你会得到一个溢出或其他“错误的答案。

+0

其spoj错误,但是当我在我的系统上运行相同时,它工作正常 – d3vdpro 2009-10-11 20:58:23

+0

什么工作正常?你可以编译'pow(200,200)',但是你能得到正确的答案吗? – Jesper 2009-10-11 20:59:25