跳到主要内容

signbit

定义于头文件 <cmath> 中。

描述

确定给定的浮点数 num 是否为负数。
库为所有 cv-unqualified 浮点类型提供了重载,作为参数 num 的类型 (自 C++23 起)

​为所有整数类型提供了附加重载,这些类型被视为 double

声明

// 1)
constexpr bool signbit( /* floating-point-type */ num );
附加重载
// 2)
template< class Integer >
constexpr 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

signbit

定义于头文件 <cmath> 中。

描述

确定给定的浮点数 num 是否为负数。
库为所有 cv-unqualified 浮点类型提供了重载,作为参数 num 的类型 (自 C++23 起)

​为所有整数类型提供了附加重载,这些类型被视为 double

声明

// 1)
constexpr bool signbit( /* floating-point-type */ num );
附加重载
// 2)
template< class Integer >
constexpr 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