如何在 Objective-C 中将负数转换为绝对值?
也就是说。
-10
变成了
10岁?
根据变量的类型,abs(int)、 labs(long)、 llabs(long long)、 imaxabs(intmax_t)、 fabsf(float)、 fabs(double)或 fabsl(long double)中的一个。
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)函数...)
habs(short)
scabs(signed char)
Apple 和 GNU 的 Objective-C 头文件还包括一个与类型无关的 ABS()宏。但是我不推荐使用 ABS(),因为它不能保证副作用安全。例如,ABS(a++)将有一个未定义的结果。
ABS()
ABS(a++)
如果使用 C + + 或 Objective-C + + ,可以引入 <cmath>头文件并使用 std::abs(),这是所有标准整数和浮点类型的模板。
<cmath>
std::abs()
您可以使用这个函数来获得绝对值:
+(NSNumber *)absoluteValue:(NSNumber *)input { return [NSNumber numberWithDouble:fabs([input doubleValue])]; }
如果你好奇它们在 abs ()函数中是做什么的:
char abs(char i) { return -(i & 128) ^ i; }