g++ 编译器中包含的 g++ 幂函数
Posted
技术标签:
【中文标题】g++ 编译器中包含的 g++ 幂函数【英文标题】:g++ power function included in g++ compiler 【发布时间】:2010-12-05 19:44:47 【问题描述】:可以使用幂函数来计算非常大的值的幂,例如 pow(200,200)。 也可以用于 long long int 值... pow(long long int,long long int)。
我收到此错误 /sources/tested.cpp: 在函数'int main()'中:
/sources/tested.cpp:16: 错误:调用重载 'pow(long long int&, long long int&)' 不明确
/usr/include/bits/mathcalls.h:154:注意:候选人是:double pow(double, double)
/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:注意:float std::pow(浮点数,整数)
/usr/lib/gcc/i486-linux/4.0.1/../../../../include/c++/4.0.1/cmath:352:注意:双 std::pow(双倍,整数) /usr/lib/gcc/i486-linux/4.0.1/../../../../include/c++/4.0.1/cmath:348: 注意:long double std::pow(long double , 长双)
/usr/lib/gcc/i486-linux/4.0.1/../../../../include/c++/4.0.1/cmath:344:注意:float std::pow(浮动,浮动)
【问题讨论】:
【参考方案1】:如果您希望进行任意精度的数学运算,则需要为其获取一个库。很可能,您的平台没有足够大的数据类型来本地执行此操作。查看GNU MP。
【讨论】:
【参考方案2】:正如您从错误消息中看到的那样,没有pow
函数适用于两个long long int
值。编译器尝试自动将long long int
值转换为其他值(double
或long
等)。但它不能明确地决定采用哪个功能。
您不能使用标准的 pow
函数来计算非常大的数字,例如 pow(200, 200)
,因为结果不适合定义了 pow
函数的任何数据类型 - 你会得到溢出或其他“错误”答案。
【讨论】:
它的 spoj 错误但是当我在我的系统上运行它时它工作正常 什么'工作正常'?你可以编译pow(200, 200)
,但是你得到正确答案了吗?以上是关于g++ 编译器中包含的 g++ 幂函数的主要内容,如果未能解决你的问题,请参考以下文章
编译器错误? g++ 允许可变大小的静态数组,除非函数是模板化的