abs
, , labs
, , llabs
_abs64
Oblicza wartość bezwzględną argumentu.
Składnia
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
Parametry
n
Wartość liczbowa.
Wartość zwracana
Funkcje abs
, labs
, llabs
i _abs64
zwracają wartość bezwzględną parametru n
. Nie ma zwracanego błędu.
Uwagi
Ponieważ język C++ umożliwia przeciążenie, można wywołać przeciążenia tych wartości abs
typu take i return long
, long long
, float
, double
i long double
. Te przeciążenia są definiowane w nagłówku <cmath>
. W programie abs
języka C zawsze przyjmuje i zwraca wartość int
.
Specyficzne dla firmy Microsoft: zakres ujemnych liczb całkowitych reprezentujących dowolny typ całkowity jest większy niż zakres dodatnich liczb całkowitych reprezentowanych w tym typie. Dlatego można podać argument do tych funkcji, których nie można przekonwertować. Jeśli wartość bezwzględna argumentu nie może być reprezentowana przez typ zwracany, abs
funkcje zwracają wartość argumentu bez zmian. W szczególności abs(INT_MIN)
zwraca wartość , zwraca LONG_MIN
INT_MIN
wartość , labs(LONG_MIN)
llabs(LLONG_MIN)
zwraca wartość LLONG_MIN
, i _abs64(_I64_MIN)
zwraca wartość _I64_MIN
. abs
W rzeczywistości nie można używać funkcji w celu zagwarantowania wartości dodatniej.
Wymagania
Procedura | Wymagany nagłówek języka C | Wymagany nagłówek języka C++ |
---|---|---|
abs , , labs llabs |
<math.h> lub <stdlib.h> |
<cmath> , <cstdlib> lub <stdlib.h> <math.h> |
_abs64 |
<stdlib.h> |
<cstdlib> lub <stdlib.h> |
Aby użyć przeciążonych wersji abs
w języku C++, należy dołączyć <cmath>
nagłówek.
Przykład
Ten program oblicza i wyświetla wartości bezwzględne kilku liczb.
// 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
Zobacz też
Konwersja danych
Obsługa obliczeń matematycznych i zmiennoprzecinkowych
_cabs
fabs
, , fabsf
fabsl
imaxabs