abs, _abs64
Berechnet den absoluten Wert.
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
);
Parameter
- n
Ganzzahliger Wert.
Rückgabewert
Die abs-Funktion gibt den absoluten Wert des Parameters zurück. Es gibt keine Fehlerrückgabe.
Hinweise
Da C++ das Überladen zulässt, können Sie Überladungen von absaufrufen, die long-, long long-, float-, double- und long double-Werte verwenden und zurückgeben. In einem C-Programm verwendet abs immer "int" und gibt auch "int" zurück.
Microsoft-spezifisch
Da der mithilfe eines Ganzzahltyps darstellbare Bereich von negativen ganzen Zahlen größer als der entsprechende Bereich von positiven ganzen Zahlen ist, die mithilfe dieses Typs dargestellt werden können, kann für abs ein nicht konvertierbares Argument bereitgestellt werden. Wenn der absolute Wert des Arguments nicht über den Rückgabetyp dargestellt werden kann, geben die abs-Funktionen den Argumentwert unverändert zurück. Insbesondere gibt abs(INT_MIN) INT_MIN zurück, labs(LONG_MIN) gibt LONG_MIN zurück, llabs(LLONG_MIN) gibt LLONG_MIN zurück und _abs64(_I64_MIN) gibt _I64_MIN zurück. Dies bedeutet, dass die abs-Funktionen nicht verwendet werden können, um einen positiven Wert sicherzustellen.
Ende Microsoft-spezifisch
Anforderungen
Routine |
Erforderlicher Header |
---|---|
abs |
<math.h> |
_abs64 |
<stdlib.h> |
Beispiel
Dieses Programm berechnet die absoluten Werte einiger Zahlen und zeigt sie an.
// 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));
}