回答:
あなたの変数の型、のいずれかに応じてabs(int)
、labs(long)
、llabs(long long)
、imaxabs(intmax_t)
、fabsf(float)
、fabs(double)
、またはfabsl(long double)
。
これらの関数はすべてC標準ライブラリの一部であるため、Objective-CとプレーンCの両方に存在します(通常、C ++プログラムでも使用できます)。
(悲しいかな、habs(short)
機能はありません。またはscabs(signed char)
そのことについて...)
AppleおよびGNUのObjective-Cヘッダーには、ABS()
型に依存しないマクロも含まれています。ABS()
ただし、副作用に対して保証されていないため、使用はお勧めしません。たとえばABS(a++)
、未定義の結果になります。
C ++またはObjective-C ++ <cmath>
を使用している場合は、ヘッダーを組み込み、を使用できますstd::abs()
。これは、すべての標準整数型および浮動小数点型用にテンプレート化されています。
ABS()
は、すべてのコンパイラで副作用に対して安全ではありません。そのため、これを使用することはお勧めしません。
extern float fabsf(float); extern double fabs(double);