std::abs, std::labs, std::llabs, std::imaxabs
| Definiert in Header <cstdlib> |
||
| Definiert in der Header-Datei <cmath> |
||
| int abs( int num ); |
(1) | (constexpr seit C++23) |
| long abs( long num ); |
(2) | (constexpr seit C++23) |
| long long abs( long long num ); |
(3) | (seit C++11) (constexpr seit C++23) |
| Definiert in Header <cstdlib> |
||
| long labs( long num ); |
(4) | (constexpr seit C++23) |
| long long llabs( long long num ); |
(5) | (seit C++11) (constexpr seit C++23) |
| Definiert in Header <cinttypes> |
||
| std::intmax_t abs( std::intmax_t num ); |
(6) | (seit C++11) (constexpr seit C++23) |
| std::intmax_t imaxabs( std::intmax_t num ); |
(7) | (seit C++11) (constexpr seit C++23) |
Berechnet den Absolutwert der Ganzzahl num. Das Verhalten ist undefiniert, wenn das Ergebnis nicht durch den Rückgabetyp dargestellt werden kann.
Wenn std::abs mit einem vorzeichenlosen ganzzahligen Argument aufgerufen wird, das nicht durch integral promotion in int konvertiert werden kann, ist das Programm ill-formed.
|
Die Überladung (6) von |
(seit C++11) |
Inhalt |
[bearbeiten] Parameter
| num | - | ganzzahliger Wert |
[bearbeiten] Rückgabewert
Der Absolutwert von num (d.h. |num|), falls dieser darstellbar ist.
[bearbeiten] Hinweise
In Zweierkomplement-Systemen liegt der Absolutwert des betragsmäßig größten negativen Wertes außerhalb des gültigen Bereichs. Zum Beispiel ist für einen 32-Bit Zweierkomplement-Typ int, INT_MIN -2147483648, aber das Ergebnis 2147483648 ist größer als INT_MAX, welches 2147483647 ist.
[bearbeiten] Beispiel
#include <climits> #include <cstdlib> #include <iostream> int main() { std::cout << std::showpos << "abs(+3) = " << std::abs(3) << '\n' << "abs(-3) = " << std::abs(-3) << '\n'; // std::cout << std::abs(INT_MIN); // undefined behavior on 2's complement systems }
Ausgabe
abs(+3) = +3 abs(-3) = +3
[bearbeiten] Defect Reports
Die folgenden Verhaltensändernden Fehlerberichte wurden rückwirkend auf zuvor veröffentlichte C++-Standards angewendet.
| DR | angewendet auf | Verhalten wie veröffentlicht | Korrigiertes Verhalten |
|---|---|---|---|
| LWG 2192 | C++98 | Die Überladungen von std::abs wurdeninkonsistent in zwei Headern deklariert |
deklarierten diese Überladungen in beiden Headern |
[bearbeiten] Siehe auch
| (C++11)(C++11) |
Absolutwert eines Gleitkommawerts (|x|) (Funktion) |
| gibt den Betrag einer komplexen Zahl zurück (function template) | |
| wendet die Funktion abs auf jedes Element des Valarrays an (function template) | |
| C-Dokumentation für abs, labs, llabs
| |