std::abs, std::labs, std::llabs, std::imaxabs
| Definido en el archivo de encabezado <cstdlib>
|
||
| Definido en el archivo de encabezado <cmath>
|
||
int abs( int n ); |
(1) | (constexpr since C++23) |
long abs( long n ); |
(2) | (constexpr since C++23) |
long long abs( long long n ); |
(3) | (desde C++11) (constexpr since C++23) |
| Definido en el archivo de encabezado <cstdlib>
|
||
long labs( long n ); |
(4) | (constexpr since C++23) |
long long llabs( long long n ); |
(5) | (desde C++11) (constexpr since C++23) |
| Definido en el archivo de encabezado <cinttypes>
|
||
std::intmax_t abs( std::intmax_t n ); |
(6) | (desde C++11) |
std::intmax_t imaxabs( std::intmax_t n ); |
(7) | (desde C++11) |
Calcula el valor absoluto de un número entero. El comportamiento no está definido si el resultado no puede representarse por el tipo de retorno.
Si se llama a std::abs con un argumento de tipo entero sin signo que no puede convertirse a int por la promoción de enteros, el programa está mal formado.
|
La sobrecarga (6) de |
(desde C++11) |
Parámetros
| n | - | Valor entero. |
Valor de retorno
El valor absoluto de n (es decir, |n|), si es representable.
Notas
En los sistemas de complemento a 2, el valor absoluto del valor más negativo está fuera de rango. Por ejemplo, para el complemento a 2 de un tipo entero de 32 bits, INT_MIN es -2147483648, pero lo que resultaría, 2147483648, es mayor que INT_MAX, que es 2147483647.
Ejemplo
#include <iostream>
#include <cstdlib>
#include <climits>
int main()
{
std::cout << "abs(+3) = " << std::abs(3) << '\n'
<< "abs(-3) = " << std::abs(-3) << '\n';
// std::cout << std::abs(INT_MIN); // comportamiento no definido
// en sistemas de complemento a 2
}
Salida:
abs(+3) = 3
abs(-3) = 3
Informes de defectos
Los siguientes informes de defectos de cambio de comportamiento se aplicaron de manera retroactiva a los estándares de C++ publicados anteriormente.
| ID | Aplicado a | Comportamiento según lo publicado | Comportamiento correcto |
|---|---|---|---|
| LWG 2192 | C++98 | Las sobrecargas de std::abs estaban declaradasde manera inconsistente en dos encabezados. |
Se declaran estas sobrecargas en ambos encabezados. |
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) | |
se aplica la std::abs función a cada elemento de valarray Original: applies the function std::abs to each element of valarray The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (plantilla de función) | |
Documentación de C para abs, labs, llabs
| |