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 值转换为其他值(doublelong 等)。但它不能明确地决定采用哪个功能。

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

【讨论】:

它的 spoj 错误但是当我在我的系统上运行它时它工作正常 什么'工作正常'?你可以编译pow(200, 200),但是你得到正确答案了吗?

以上是关于g++ 编译器中包含的 g++ 幂函数的主要内容,如果未能解决你的问题,请参考以下文章

在编译时设置 app.manifest 中包含的属性

g++编译选项

编译器错误? g++ 允许可变大小的静态数组,除非函数是模板化的

linux下g++编译器中使用一些函数

是否有 GCC 编译指示可以覆盖某些代码段的调试信息 (-g) 的生成?

OpsWorks - 自定义食谱中包含的内容