Поделиться через


abs, labs, llabs, _abs64

Вычисляет абсолютное значение аргумента.

Синтаксис

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

Параметры

n
Числовое значение.

Возвращаемое значение

Функции abs, labsllabsи _abs64 функции возвращают абсолютное значение параметраn. Не возвращается ошибка.

Замечания

Так как C++ допускает перегрузку, можно вызывать перегрузки abs, которые принимают и возвращают значения long, long long, float, double и long double. Эти перегрузки определяются в заголовке <cmath> . В программе abs C всегда принимает и возвращает значение int.

Корпорация Майкрософт: диапазон отрицательных целых чисел, представленных в любом целочисленном типе, больше диапазона положительных целых чисел, представленных в этом типе. Таким образом, можно указать аргумент для этих функций, которые нельзя преобразовать. Если абсолютное значение аргумента не может быть представлено типом возвращаемого значения, abs функции возвращают значение аргумента без изменений. В частности abs(INT_MIN) возвращает INT_MIN, labs(LONG_MIN) возвращает LONG_MIN, llabs(LLONG_MIN) возвращает LLONG_MIN, а _abs64(_I64_MIN) возвращает _I64_MIN. abs Фактически функции нельзя использовать для обеспечения положительного значения.

Требования

Маршрут Обязательный заголовок C Обязательный заголовок C++
abs, labs, llabs <math.h> или <stdlib.h> <cmath>, <cstdlib>, <stdlib.h> или <math.h>
_abs64 <stdlib.h> <cstdlib> или <stdlib.h>

Чтобы использовать перегруженные abs версии в C++, необходимо включить <cmath> заголовок.

Пример

Эта программа вычисляет и отображает абсолютные значения несколько чисел.

// 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

См. также

Преобразование данных
Поддержка математических и плавающих точек
_cabs
fabs, fabsf, fabsl
imaxabs