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);