std::signbit
Определено в заголовке <cmath> | ||
|---|---|---|
| (1) | ||
bool signbit( float num ); bool signbit( double num ); bool signbit( long double num ); |
(с C++11) (до C++23) | |
constexpr bool signbit( /* floating-point-type */ num ); | (с C++23) | |
| Дополнительные перегрузки | ||
Определено в заголовке <cmath> | ||
template< class Integer > bool signbit( Integer num ); | (A) | (с C++11) (constexpr с C++23) |
1) Определяет, является ли заданное число с плавающей точкой
num отрицательным. Библиотека предоставляет перегрузки для всех типов чисел с плавающей точкой без квалификаторов cv в качестве типа параметра num.(с C++23)
A) Дополнительные перегрузки предоставляются для всех целочисленных типов, которые обрабатываются как
double.Параметры
| num | - | число с плавающей точкой или целое значение |
Возвращаемое значение
true если num отрицательное, false в противном случае.
Примечания
Эта функция определяет бит знака нулей, бесконечностей и NaN. Вместе с std::copysign, std::signbit является одним из двух единственных портативных способов проверить знак 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|\)|x|) (функция) |
|
(C++11)(C++11)(C++11) | копирует знак числа с плавающей точкой (функция) |
C документация для signbit |
|
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/numeric/math/signbit