Namensräume
Varianten
Aktionen

std::abs, std::labs, std::llabs, std::imaxabs

Von cppreference.com
< cpp‎ | numeric‎ | math
 
 
 
 
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>
(6) (seit C++11)
(constexpr seit C++23)
(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 std::abs für std::intmax_t ist in <cinttypes> genau dann verfügbar, wenn std::intmax_t ein extended integer type ist.

(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 wurden
inkonsistent in zwei Headern deklariert
deklarierten diese Überladungen
in beiden Headern

[bearbeiten] Siehe auch

Absolutwert eines Gleitkommawerts (|x|)
(Funktion) [bearbeiten]
gibt den Betrag einer komplexen Zahl zurück
(function template) [edit]
wendet die Funktion abs auf jedes Element des Valarrays an
(function template) [edit]
C-Dokumentation für abs, labs, llabs