abs, _abs64
Oblicz wartość bezwzględną.
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
);
Parametry
- n
Wartość całkowita.
Wartość zwracana
Funkcja abs zwraca wartość bezwzględną tego parametru.Nie będzie zwrotu błędu.
Uwagi
Ponieważ język C++ pozwala na przeciążenie, można wywoływać przeciążenia abs przyjmujące i zwracające wartości long, long long, float, double i long double.W programie C abs zawsze przyjmuje i zwraca wartość int.
Specyficzne dla firmy Microsoft
Ponieważ zakres ujemnych liczb całkowitych, które mogą być reprezentowane za pomocą dowolnego typu integralnego, jest większy niż zakres dodatnich liczb całkowitych, który może być reprezentowany za pomocą tego typu, jest możliwe, aby podać argument do abs, który nie może zostać przekonwertowany.Jeśli wartość bezwzględna argumentu nie może być przedstawiona przez zwracany typ, funkcje abs zwracają niezmienioną wartość argumentu.abs(INT_MIN) zwraca INT_MIN, labs(LONG_MIN) zwraca LONG_MIN, llabs(LLONG_MIN) zwraca LLONG_MIN, a _abs64(_I64_MIN) zwraca _I64_MIN.Oznacza to, że funkcje abs nie mogą być używane dla zagwarantowania wartości dodatniej.
End specyficzny dla Microsoft
Wymagania
Procedura |
Wymagany nagłówek |
---|---|
abs |
<math.h> |
_abs64 |
<stdlib.h> |
Przykład
Program ten wylicza i wyświetla wartości bezwzględne dla kilku numerów.
// 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));
}