std:: abs, std:: labs, std:: llabs, std:: imaxabs
|
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>
|
||
|
std::
intmax_t
abs
(
std::
intmax_t
num
)
;
|
(6) |
(desde C++11)
(constexpr desde C++23) |
|
std::
intmax_t
imaxabs
(
std::
intmax_t
num
)
;
|
(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
|
(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
|
(C++11)
(C++11)
|
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
|
|