Answers:
根据您的变量的类型,一abs(int)
,labs(long)
,llabs(long long)
,imaxabs(intmax_t)
,fabsf(float)
,fabs(double)
,或fabsl(long double)
。
这些功能都是C标准库的一部分,因此在Objective-C和普通C中都存在(并且通常在C ++程序中也可用)。
(A,没有habs(short)
功能。或者scabs(signed char)
那个问题……)
苹果和GNU的Objective-C标头还包含一个ABS()
与类型无关的宏。但我不建议您使用ABS()
它,因为它不能保证副作用安全。例如,ABS(a++)
将有未定义的结果。
如果您使用的是C ++或Objective-C ++,则可以引入<cmath>
标头并使用std::abs()
,它是所有标准整数和浮点类型的模板。
ABS()
并非在所有编译器上都是副作用安全的,这就是为什么我不建议使用它的原因。
extern float fabsf(float); extern double fabs(double);