.- .
计算 x
的 y
次幂。
语法
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。
返回值
返回 x
y
的值。 在溢出或下溢时不输出错误消息。
x 和 y 的值 |
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。 若要避免此问题,将第一个参数转换为 double
、float
或 long double
。
最初,pow(T, int)
重载将 pow
调用展开到一系列内联乘法运算中。 虽然速度更快,但它也不太准确。 Visual Studio 2015 更新 1 中移除了此实现。 有关详细信息,请参阅 Visual Studio 2015 更新 1 中的符合性改进。
默认情况下,此函数的全局状态范围限定为应用程序。 若要更改此行为,请参阅 CRT 中的全局状态。
要求
例程 | 必需的标头 (C) | 必需的标头 (C++) |
---|---|---|
.- . | <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