C++官网参考链接:https://cplusplus.com/reference/cmath/pow/
函数
<cmath> <ctgmath>
pow
C90
double pow(double base, double exponent);
C99
double pow(double base, double exponent);
float powf(float base, float exponent);
long double powl(long double base, long double exponent);
C++98
double pow(double base, double exponent);
float pow (float base, float exponent);
long double pow(long double base, long double exponent);
double pow(double base, int exponent);
long double pow(long double base, int exponent);
C++11
double pow(double base, double exponent);
float pow(float base, float exponent);
long double pow(long double base, long double exponent);
double pow(Type1 base, Type2 exponent); // additional overloads
求幂
返回base的exponent的幂:
base^exponent
C99
头文件<tgmath.h>提供了该函数的泛型类型的宏版本。
C++98
该函数在<complex>和<valarray>中被重载(参见complex pow和valarray pow)
C++11
这个头文件(<cmath>)为其他算术类型(arithmetic types)(Type1和Type2)的组合提供了额外的重载:这些重载在计算之前有效地将其实参转换为double类型,除非至少有一个实参是long double类型(在这种情况下,两个实参都被转换为long double类型)。
此函数在<complex>和<valarray>中也被重载(参见complex pow和valarray pow)。
形参
base
基数值
exponent
指数值
将base取exponent幂的结果。
如果base是有限负数,exponent是有限而不是整数值,则会导致定义域错误。
如果base和exponent都为0,也可能在某些实现上导致定义域错误。
如果base为0而exponent为负,则可能导致定义域错误或极点错误(或者无错误,这取决于库实现)。
如果结果绝对太大或太小,无法用返回类型的值表示,则该函数还可能导致范围错误。
C90(C++98)
如果发生定义域错误,将全局变量errno设置为EDOM。
如果发生极点或范围错误,则全局变量errno设置为ERANGE。
C99(C++11)
如果发生定义域错误:
—math_errhandling具有MATH_ERRNO集合:全局变量errno设置为EDOM。
—math_errhandling具有MATH_ERREXCEPT集合:将引发FE_INVALID。
如果发生极点错误:
—math_errhandling具有MATH_ERRNO集合:全局变量errno设置为ERANGE。
—math_errhandling具有MATH_ERREXCEPT集合:引发FE_DIVBYZERO。
如果出现范围错误:
—math_errhandling具有MATH_ERRNO集合:全局变量errno设置为ERANGE。
—math_errhandling具有MATH_ERREXCEPT集合:引发FE_OVERFLOW或FE_UNDERFLOW。
用例
/* pow example */
#include <stdio.h> /* printf */
#include <math.h> /* pow */
int main ()
{
printf ("7 ^ 3 = %f\n", pow (7.0, 3.0) );
printf ("4.73 ^ 12 = %f\n", pow (4.73, 12.0) );
printf ("32.01 ^ 1.54 = %f\n", pow (32.01, 1.54) );
return 0;
}
输出: