Isinf
定义于头文件 <cmath>
中。
描述
确定给定的浮点数 num
是正无穷大还是负无穷大。
标准库为所有 cv-unqualified 浮点类型提供了重载,作为参数 num
的类型 (C++23 起)。
为所有整数类型提供了附加重载,它们被视为 double。
声明
- C++23
- C++11
// 1)
constexpr bool isinf( /* floating-point-type */ num );
附加重载
// 2)
template< class Integer >
constexpr bool isinf( Integer num );
// 1)
bool isinf( float num );
// 2)
bool isinf( double num );
// 3)
bool isinf( long double num );
附加重载
// 4)
template< class Integer >
bool isinf( Integer num );
参数
num
- 浮点或整数值
返回值
如果 num
是无穷大,则为 true
,否则为 false
。
备注
额外的重载不需要完全按照额外重载提供。它们只需要足以确保对于其整数类型的参数 num
,
std::isinf(num)
与 std::isinf(static_cast<double>(num))
效果相同。
示例
#include <cfloat>
#include <cmath>
#include <iostream>
#include <limits>
int main()
{
const double max = std::numeric_limits<double>::max();
const double inf = std::numeric_limits<double>::infinity();
std::cout
<< std::boolalpha
<< "isinf(NaN) = "
<< std::isinf(NAN) << '\n'
<< "isinf(Inf) = "
<< std::isinf(INFINITY) << '\n'
<< "isinf(max) = "
<< std::isinf(max) << '\n'
<< "isinf(inf) = "
<< std::isinf(inf) << '\n'
<< "isinf(0.0) = "
<< std::isinf(0.0) << '\n'
<< "isinf(exp(800)) = "
<< std::isinf(std::exp(800)) << '\n'
<< "isinf(DBL_MIN/2.0) = "
<< std::isinf(DBL_MIN / 2.0) << '\n';
}
可能结果
isinf(NaN) = false
isinf(Inf) = true
isinf(max) = false
isinf(inf) = true
isinf(0.0) = false
isinf(exp(800)) = true
isinf(DBL_MIN/2.0) = false