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の種類
CやC++の場合も同様に引数の型によって名前が変わる。ただし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))
フリー百科事典『ウィキペディア(Wikipedia)』 Text is available under GNU Free Documentation License.

