signbit
定义于头文件 <cmath>
中。
描述
确定给定的浮点数 num
是否为负数。
库为所有 cv-unqualified 浮点类型提供了重载,作为参数 num
的类型 (自 C++23 起)。
为所有整数类型提供了附加重载,这些类型被视为 double。
声明
- C++23
- C++11
// 1)
constexpr bool signbit( /* floating-point-type */ num );
附加重载
// 2)
template< class Integer >
constexpr bool signbit( Integer num );
// 1)
bool signbit( float num );
// 2)
bool signbit( double num );
// 3)
bool signbit( long double num );
附加重载
// 4)
template< class Integer >
bool signbit( Integer num );
参数
num
- 浮点或整数值
返回值
如果 num
为负,则为 true
,否则为 false
。
备注
此函数检测零、无穷大和 NaN
的符号位。与 std::copysign
一起,std::signbit
是检查 NaN
符号的仅有的两种可移植方法之一。
额外的重载不需要完全按照额外重载提供。它们只需要足以确保对于其整数类型的参数 num
,
std::signbit(num)
与 std::signbit(static_cast<double>(num))
具有相同的效果。
示例
#include <cmath>
#include <iostream>
int main()
{
std::cout
<< std::boolalpha
<< "signbit(+0.0) = "
<< std::signbit(+0.0) << '\n'
<< "signbit(-0.0) = "
<< std::signbit(-0.0) << '\n'
<< "signbit(+nan) = "
<< std::signbit(+NAN) << '\n'
<< "signbit(-nan) = "
<< std::signbit(-NAN) << '\n'
<< "signbit(+inf) = "
<< std::signbit(+INFINITY) << '\n'
}
结果
signbit(+0.0) = false
signbit(-0.0) = true
signbit(+nan) = false
signbit(-nan) = true
signbit(+inf) = false
signbit(-inf) = true