abs, labs, llabs, _abs64

Calcula el valor absoluto del argumento.

Sintaxis

int abs( int n );
long labs( long n );
long long llabs( long long n );
__int64 _abs64( __int64 n );
long abs( long n );   // C++ only
long long abs( long long n );   // C++ only
double abs( double n );   // C++ only
long double abs( long double n );   // C++ only
float abs( float n );   // C++ only

Parámetros

n
Valor numérico.

Valor devuelto

Las funciones abs, labs, llabs y _abs64 devuelven el valor absoluto del parámetro n. No se devuelve ningún error.

Comentarios

Puesto que C++ permite sobrecargas, es posible llamar a las sobrecargas de abs que toman y devuelven los valores long, long long, float, double y long double. Estas sobrecargas se definen en el encabezado <cmath>. En un programa C, abs siempre toma y devuelve int.

Específico de Microsoft: el intervalo de enteros negativos que se pueden representar en cualquier tipo entero es mayor que el intervalo de enteros positivos que se pueden representar en ese tipo. Por lo tanto, es posible proporcionar un argumento a estas funciones que no se pueden convertir. Si el valor absoluto del argumento no se puede representar mediante el tipo de valor devuelto, las abs funciones devuelven el valor del argumento sin cambios. En concreto, abs(INT_MIN) devuelve INT_MIN, labs(LONG_MIN) devuelve LONG_MIN, llabs(LLONG_MIN) devuelve LLONG_MIN y _abs64(_I64_MIN) devuelve _I64_MIN. De hecho, las abs funciones no se pueden usar para garantizar un valor positivo.

Requisitos

Routine Encabezado C necesario Encabezado C++ necesario
abs, labs, llabs <math.h> o <stdlib.h> <cmath>, <cstdlib>, <stdlib.h> o <math.h>
_abs64 <stdlib.h> <cstdlib> o <stdlib.h>

Para usar las versiones con sobrecarga de abs en C++, debe incluir el encabezado <cmath>.

Ejemplo

Este programa calcula y muestra los valores absolutos de diversos números.

// crt_abs.c
// Build: cl /W3 /TC crt_abs.c
// This program demonstrates the use of the abs function
// by computing and displaying the absolute values of
// several numbers.

#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <limits.h>

int main( void )
{
    int ix = -4;
    long lx = -41567L;
    long long llx = -9876543210LL;
    __int64 wx = -1;

    // absolute 32 bit integer value
    printf_s("The absolute value of %d is %d\n", ix, abs(ix));

    // absolute long integer value
    printf_s("The absolute value of %ld is %ld\n", lx, labs(lx));

    // absolute long long integer value
    printf_s("The absolute value of %lld is %lld\n", llx, llabs(llx));

    // absolute 64 bit integer value
    printf_s("The absolute value of 0x%.16I64x is 0x%.16I64x\n", wx,
        _abs64(wx));

    // Integer error cases:
    printf_s("Microsoft implementation-specific results:\n");
    printf_s(" abs(INT_MIN) returns %d\n", abs(INT_MIN));
    printf_s(" labs(LONG_MIN) returns %ld\n", labs(LONG_MIN));
    printf_s(" llabs(LLONG_MIN) returns %lld\n", llabs(LLONG_MIN));
    printf_s(" _abs64(_I64_MIN) returns 0x%.16I64x\n", _abs64(_I64_MIN));
}
The absolute value of -4 is 4
The absolute value of -41567 is 41567
The absolute value of -9876543210 is 9876543210
The absolute value of 0xffffffffffffffff is 0x0000000000000001
Microsoft implementation-specific results:
abs(INT_MIN) returns -2147483648
labs(LONG_MIN) returns -2147483648
llabs(LLONG_MIN) returns -9223372036854775808
_abs64(_I64_MIN) returns 0x8000000000000000

Consulte también

Conversión de datos
Compatibilidad con matemáticas y punto flotante
_cabs
fabs, fabsf, fabsl
imaxabs