abs, _abs64
Вычисляет абсолютное значение.
int abs(
int 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
__int64 _abs64(
__int64 n
);
Параметры
- n
Целое значение.
Возвращаемое значение
Функция abs возвращает абсолютное значение своего параметра. Нет какого-либо возврата ошибки.
Заметки
Поскольку C++ допускает перегрузки, можно вызывать перегрузки abs, принимающие и возвращающие значения long, long long, float, double и long double. В программе C abs всегда принимает и возвращает тип int.
Блок, относящийся только к системам Майкрософт
Поскольку диапазон отрицательных целых чисел, которые могут быть представлены с помощью любого целочисленного типа больше, чем диапазон положительных целых чисел, которые можно представить с помощью этого типа, можно указать аргумент abs, который не может быть преобразован. Если абсолютное значение аргумента не может быть представлено типом возвращаемого значения, функции abs возвращают значение аргумента без изменений. В частности, метод abs(INT_MIN) возвращает значение INT_MIN, то labs(LONG_MIN) возвращает LONG_MIN, то llabs(LLONG_MIN) возвращает LLONG_MIN, и _abs64(_I64_MIN) возвращает _I64_MIN. Это также означает, что только для объекта abs значение использовать невозможно.
Завершение блока, относящегося только к системам Майкрософт
Требования
Подпрограмма |
Обязательный заголовок |
---|---|
abs |
<math.h> |
_abs64 |
<stdlib.h> |
Пример
Эта программа вычисляет и отображает абсолютные значения нескольких чисел.
// 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));
}