Namespaces
Variants

std:: signbit

From cppreference.net
Common mathematical functions
Nearest integer floating point operations
(C++11)
(C++11)
(C++11) (C++11) (C++11)
Floating point manipulation functions
(C++11) (C++11)
(C++11)
(C++11)
Classification and comparison
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
signbit
(C++11)
Types
(C++11)
(C++11)
(C++11)
Macro constants
Definido en el encabezado <cmath>
(1)
bool signbit ( float num ) ;

bool signbit ( double num ) ;

bool signbit ( long double num ) ;
(desde C++11)
(hasta C++23)
constexpr bool signbit ( /*floating-point-type*/ num ) ;
(desde C++23)
Sobrecarga SIMD (desde C++26)
Definido en el encabezado <simd>
template < /*math-floating-point*/ V >

constexpr typename /*deduced-simd-t*/ < V > :: mask_type

signbit ( const V & v_num ) ;
(S) (desde C++26)
Definido en el encabezado <cmath>
template < class Integer >
bool signbit ( Integer num ) ;
(A) (desde C++11)
(constexpr desde C++23)
1) Determina si el número de punto flotante dado num es negativo. La biblioteca proporciona sobrecargas para todos los tipos de punto flotante sin calificación cv como el tipo del parámetro num . (since C++23)
S) La sobrecarga SIMD realiza un std::signbit elemento por elemento en v_num .
(Consulte math-floating-point y deduced-simd-t para sus definiciones.)
(desde C++26)
A) Se proporcionan sobrecargas adicionales para todos los tipos enteros, los cuales son tratados como double .

Contenidos

Parámetros

num - valor de punto flotante o entero
v_num - un objeto de datos paralelos de especialización std::basic_simd donde su tipo de elemento es un tipo de punto flotante

Valor de retorno

1) true si num es negativo, false en caso contrario.
S) Un objeto máscara de datos paralelos donde el i th elemento es igual a true si v_num [ i ] es negativo o false en caso contrario para todo i en el rango [ 0 , v_num. size ( ) ) .

Notas

Esta función detecta el bit de signo de ceros, infinitos y NaNs. Junto con std::copysign , std::signbit es una de las dos únicas formas portables de examinar el signo de un NaN.

Las sobrecargas adicionales no requieren ser proporcionadas exactamente como (A) . Solo necesitan ser suficientes para garantizar que para su argumento num de tipo entero, std :: signbit ( num ) tenga el mismo efecto que std :: signbit ( static_cast < double > ( num ) ) .

Ejemplo

#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';
}

Salida:

signbit(+0.0) = false
signbit(-0.0) = true
signbit(+nan) = false
signbit(-nan) = true
signbit(+inf) = false
signbit(-inf) = true

Véase también

valor absoluto de un valor de punto flotante ( |x| )
(función)
(C++11) (C++11) (C++11)
copia el signo de un valor de punto flotante
(función)
Documentación C para signbit