std::signbit
Von cppreference.com
| Definiert in der Header-Datei <cmath> |
||
| (1) | ||
bool signbit( float num ); bool signbit( double num ); |
(seit C++11) (bis C++23) |
|
| constexpr bool signbit( /*floating-point-type*/ num ); |
(seit C++23) | |
| SIMD-Überladung (seit C++26) |
||
| Definiert im Header <simd> |
||
| template< /*math-floating-point*/ V > constexpr typename /*deduced-simd-t*/<V>::mask_type |
(S) | (seit C++26) |
| Definiert in der Header-Datei <cmath> |
||
| template< class Integer > bool signbit( Integer num ); |
(A) | (seit C++11) (constexpr seit C++23) |
1) Ermittelt, ob die gegebene Fließkommazahl num negativ ist. Die Bibliothek stellt Überladungen für alle cv-unqualifizierten Fließkommatypen als Parametertyp num bereit.(seit C++23)
|
S) Die SIMD-Überladung führt ein elementweises
std::signbit für v_num durch.
|
(seit C++26) |
A) Zusätzliche Überladungen werden für alle ganzzahligen Typen bereitgestellt, die als double behandelt werden.
Inhalt |
[bearbeiten] Parameter
| num | - | Gleitkomma- oder Ganzzahlwert |
| v_num | - | Ein datenparalleles Objekt einer std::basic_simd-Spezialisierung, deren Elementtyp ein Gleitkommatyp ist |
[bearbeiten] Rückgabewert
1) true, wenn num negativ ist, andernfalls false.
S) Ein datenparalleles Maskenobjekt, bei dem das i-te Element true ist, wenn v_num[i] negativ ist, oder false andernfalls für alle i im Bereich
[0, v_num.size()).[bearbeiten] Anmerkungen
Diese Funktion erkennt das Vorzeichenbit von Nullen, Unendlichkeiten und NaNs. Zusammen mit std::copysign ist std::signbit eine der wenigen portablen Möglichkeiten, das Vorzeichen einer NaN zu untersuchen.
Die zusätzlichen Überladungen müssen nicht exakt als (A) bereitgestellt werden. Sie müssen nur ausreichen, um sicherzustellen, dass für ihr Argument num vom Ganzzahltyp std::signbit(num) die gleiche Auswirkung hat wie std::signbit(static_cast<double>(num)).
[bearbeiten] Beispiel
Führen Sie diesen Code aus
#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'; }
Ausgabe
signbit(+0.0) = false signbit(-0.0) = true signbit(+nan) = false signbit(-nan) = true signbit(+inf) = false signbit(-inf) = true
[bearbeiten] Siehe auch
| (C++11)(C++11) |
Absolutwert eines Gleitkommawerts (|x|) (Funktion) |
| (C++11)(C++11)(C++11) |
kopiert das Vorzeichen eines Gleitkommawerts (Funktion) |
| C-Dokumentation für signbit
| |