C言語 絶対値を求める方法 abs fabs 条件演算子 マクロ

整数の絶対値を求める方法

#include <stdlib.h> // インクルードが必要

int a = -500;
int ret = 0;

ret = abs(a);
printf("%d", ret);

ret = abs(-1000);
printf("%d", ret);
500
1000

C言語で絶対値を求めるにはabs関数を使います。
abs関数の使い方はとても簡単で、
引数に指定した値もしくは、変数の絶対値を戻り値として返します。

stdlib.hのインクルードが必要です。

double型の絶対値を求める方法

#include <math.h> // インクルードが必要

double d = -333.777;
double ret = 0.0;

ret = fabs(d);
printf("%lf\n", ret);

ret = fabs(-0.668);
printf("%lf\n", ret);
333.777000
0.668000

double型の絶対値を求めるにはfabs関数を使います。

今度はmath.hのインクルードが必要です。

スポンサーリンク

if文で絶対値を求める方法

int d = -300;
int ret = 0;

if (d > 0) {
	ret = d;
} else {
	ret = -d;
}

printf("%d\n", ret);
300

abs関数を使わなくても絶対値を求める事ができます。

値がプラスの時は値をそのまま返し、
値がマイナスの時は、マイナスを掛けて返します。
分かりやすく書くなら、(-1 * d); となります。

条件演算子を使って絶対値を求める方法

int d = -300;
int ret = 0;

ret = (d > 0) ? d : -d;

printf("%d\n", ret);
300

条件演算子を使って1行で書く事ができました。

マクロを使って絶対値を求める方法

#define ABS(num) ((num) > 0 ? (num) : -(num))

int i = -300;
double d = -111.555;

printf("%d\n", ABS(i));
printf("%lf\n", ABS(d));
printf("%lf\n", ABS(-0.3));
300
111.555000
0.300000

マクロで絶対値を求める方法は、
データ型を指定しなくても良いので、とても便利です。


これで絶対値を求める事ができるようになりました。