pow, powf, powl

计算 xy 次幂。

语法

double pow( double x, double y );
float powf( float x, float y );
long double powl( long double x, long double y );
define pow(X, Y) // Requires C11 or higher

double pow( double x, int y );  // C++ only
float pow( float x, float y );  // C++ only
float pow( float x, int y );  // C++ only
long double pow( long double x, long double y );  // C++ only
long double pow( long double x, int y );  // C++ only

参数

x
Base。

y
Exponent。

返回值

返回 xy 的值。 在溢出或下溢时不输出错误消息。

xy 的值 pow 的返回值
x != 0.0 且 y == 0.0 1
x == 0.0 且 y == 0.0 1
x == 0.0 且 y< 0 INF

备注

pow 无法识别大于 264 的整型浮点值(如 1.0E100)。

pow 具有使用流式处理 SIMD 扩展 2 (SSE2) 的实现。 有关使用 SSE2 实现的信息和限制,请参阅 _set_SSE2_enable

由于 C++ 允许重载,因此你可以调用 pow 的任何不同重载。 在 C 程序中,除非使用 <tgmath.h> 宏来调用此函数,否则 pow 始终采用两个 double 值并返回 double 值。

如果使用 <tgmath.h> 中的 pow 宏,则参数的类型将确定选择哪个版本的函数。 有关详细信息,请参阅泛型类型数学

pow(int, int) 将不再可用。 如果使用此重载,则编译器可能发出 C2668。 若要避免此问题,将第一个参数转换为 doublefloatlong double

最初,pow(T, int) 重载将 pow 调用展开到一系列内联乘法运算中。 虽然速度更快,但它也不太准确。 Visual Studio 2015 更新 1 中移除了此实现。 有关详细信息,请参阅 Visual Studio 2015 更新 1 中的符合性改进

默认情况下,此函数的全局状态范围限定为应用程序。 要更改此行为,请参阅 CRT 中的全局状态

要求

例程 必需的标头 (C) 必需的标头 (C++)
pow, powf, powl <math.h> <math.h><cmath>
pow <tgmath.h>

有关兼容性的详细信息,请参阅 兼容性

示例

// crt_pow.c

#include <math.h>
#include <stdio.h>

int main( void )
{
   double x = 2.0, y = 3.0, z;

   z = pow( x, y );
   printf( "%.1f to the power of %.1f is %.1f\n", x, y, z );
}
2.0 to the power of 3.0 is 8.0

另请参阅

数学和浮点支持
expexpfexpl
loglogflog10log10f
sqrtsqrtfsqrtl
_CIpow