std:: signbit
|
定义于头文件
<cmath>
|
||
| (1) | ||
|
bool
signbit
(
float
num
)
;
bool
signbit
(
double
num
)
;
|
(C++11 起)
(C++23 前) |
|
|
constexpr
bool
signbit
(
/*floating-point-type*/
num
)
;
|
(C++23 起) | |
|
SIMD 重载
(C++26 起)
|
||
|
定义于头文件
<simd>
|
||
|
template
<
/*math-floating-point*/
V
>
constexpr
typename
/*deduced-simd-t*/
<
V
>
::
mask_type
|
(S) | (C++26 起) |
|
定义于头文件
<cmath>
|
||
|
template
<
class
Integer
>
bool signbit ( Integer num ) ; |
(A) |
(C++11 起)
(C++23 起为 constexpr) |
|
S)
SIMD 重载对
v_num
执行逐元素的
std::signbit
运算。
|
(since C++26) |
目录 |
参数
| num | - | 浮点数或整数值 |
| v_num | - | 数据并行对象,其元素类型为浮点类型的 std::basic_simd 特化 |
返回值
[
0
,
v_num.
size
(
)
)
内的所有
i
满足
v_num
[
i
]
为负数时,其第 i
th
个元素等于
true
,否则为
false
。
注释
此函数检测零、无穷大及 NaN 的符号位。
std::signbit
与
std::copysign
是仅有的两种可跨平台检测 NaN 符号位的方法。
额外的重载不需要完全按照 (A) 提供。只需确保对于整数类型的实参 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(-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
参见
|
(C++11)
(C++11)
|
浮点数值的绝对值 (
|x|
)
(函数) |
|
(C++11)
(C++11)
(C++11)
|
复制浮点数值的符号
(函数) |
|
C 文档
for
signbit
|
|