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) |
Contenido |
[editar] Parámetros
n | - | Valor entero. |
[editar] Valor de retorno
El valor absoluto de n
(es decir, |n|
), si es representable.
[editar] 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.
[editar] 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
[editar] 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. |
[editar] 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
|