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
、labs
、llabs
、_abs64
の各関数は、パラメーター n
の絶対値を返します。 エラーの戻り値はありません。
解説
C++ ではオーバーロードが可能であるため、abs
, long
、long long
、float
、および double
の値を受け取って返す long double
のオーバーロードを呼び出すことができます。 これらのオーバーロードは <cmath>
ヘッダーで定義されています。 C プログラムでは、abs
は常に int
を受け取って返します。
Microsoft 固有: 任意の整数型で表される負の整数の範囲が、その型で表すことができる正の整数の範囲よりも大きい。 そのため、変換できないこれらの関数に引数を指定できます。 引数の絶対値を戻り値の型で表すことができる場合、 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> |
C++ で abs
のオーバーロードされたバージョンを使用するには、<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