abs

absの最新ニュースをまとめて検索!

absは、多くのプログラミング言語において引数の絶対値を返す関数手続きである。言語によってabs, Abs, ABSなどと大文字小文字に揺れがあったり、多少の修飾辞を伴っていたりする場合もある。例えばFORTRANの場合、引数のによってABS, IABSなど、名前が変わる。

[編集] C/C++

C/C++では<stdlib.h>及び<cstdlib>の中で、次のように関数absが宣言されている。ただし、後述するようにこれ以外にもいくつか種類が存在する。

int abs(int);

そして、例えば次のように使用できる。

#include <stdio.h>
#include <stdlib.h>
 
int main() {
	int x;
	int x_abs;
	x = -5;
	x_abs = abs(x);
	printf("%dの絶対値は%d",x,x_abs);
	return 0;
}

出力結果

-5の絶対値は5

なお、符号付整数型に2の補数が用いる処理系でabs(INT_MIN)を行う場合など、結果が表現できない場合の動作は未定義である。

[編集] absの種類

CC++の場合も同様に引数の型によって名前が変わる。ただしC++ではabsがそれぞれの型に対して多重定義されているので、型の区別なく使用することもできる。

  • abs - int (整数型
  • labs - long (長整数型)
  • llabs - long long (長々整数型) *
  • imaxabs - intmax_t (処理系が扱える最大の整数型) *
  • fabs - double (浮動小数点数型)
  • fabsf - float (〃) *
  • fabsl - long double (〃) *
  • cabs - double complex (複素数型/C99) *
  • cabsf - float complex (〃) *
  • cabsl - long double complex (〃) *
  • abs - complex<T> (複素数型/C++)
  • abs - valarray<T> (ベクトル演算/C++)

*印があるものはC99より導入された。浮動小数点数型の関数は<math.h>および<cmath>、C99の複素数型の関数は<complex.h> 、C++の複素数型の関数は<complex>、valarray<T>型の関数は<valarray>にて宣言されている。

[編集] 実装例

absを自前で定義したい場合は以下のように実施する。

int Abs(int i) { /* 標準ライブラリのabsと区別するため、大文字を使用 */
	if (i < 0)
		return -i;
	else
		return i;
}

もしくは、マクロを用いればC言語でも型を気にせずに用いることが可能となる。しかし副作用に注意する必要性が生じる。

#define abs(x) ((x) >= 0 ? (x) : -(x))

最終更新 2009年9月15日 (火) 03:28 (日時は個人設定で未設定ならばUTC)。
【abs】変更履歴

ご利用上の注意

もっと調べる!