Namespaces
Variants

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

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)
(C++11)
Types
(C++11)
(C++11)
(C++11)
Macro constants
Definido en el encabezado <cstdlib>
Definido en el encabezado <cmath>
int abs ( int num ) ;
(1) (constexpr desde C++23)
long abs ( long num ) ;
(2) (constexpr desde C++23)
long long abs ( long long num ) ;
(3) (desde C++11)
(constexpr desde C++23)
Definido en el encabezado <cstdlib>
long labs ( long num ) ;
(4) (constexpr desde C++23)
long long llabs ( long long num ) ;
(5) (desde C++11)
(constexpr desde C++23)
Definido en el encabezado <cinttypes>
(6) (desde C++11)
(constexpr desde C++23)
(7) (desde C++11)
(constexpr desde C++23)

Calcula el valor absoluto del número entero num . El comportamiento es indefinido si el resultado no puede ser representado por el tipo de retorno.

Si std::abs es llamado con un argumento integral sin signo que no puede ser convertido a int mediante promoción integral , el programa está mal formado.

La sobrecarga (6) de std::abs para std::intmax_t se proporciona en <cinttypes> si y solo si std::intmax_t es un tipo entero extendido .

(desde C++11)

Contenidos

Parámetros

num - valor entero

Valor de retorno

El valor absoluto de num (es decir, |num| ), si es representable.

Notas

En sistemas de complemento a 2 , el valor absoluto del valor más negativo está fuera de rango, por ejemplo, para el tipo de complemento a 2 de 32 bits int , INT_MIN es - 2147483648 , pero el resultado hipotético 2147483648 es mayor que INT_MAX , que es 2147483647 .

Ejemplo

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

Salida:

abs(+3) = +3
abs(-3) = +3

Informes de defectos

Los siguientes informes de defectos que modifican el comportamiento se aplicaron retroactivamente a los estándares publicados anteriormente de C++.

DR Aplicado a Comportamiento publicado Comportamiento correcto
LWG 2192 C++98 las sobrecargas de std::abs se declaraban
de manera inconsistente en dos cabeceras
se declaran estas sobrecargas
en ambas cabeceras

Véase también

valor absoluto de un valor de punto flotante ( |x| )
(función)
devuelve la magnitud de un número complejo
(plantilla de función)
aplica la función abs a cada elemento del valarray
(plantilla de función)
Documentación C para abs , labs , llabs