在 Objective-C 中转换为绝对值

如何在 Objective-C 中将负数转换为绝对值?

也就是说。

-10

变成了

10岁?

103477 次浏览

根据变量的类型,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(),这是所有标准整数和浮点类型的模板。

您可以使用这个函数来获得绝对值:

+(NSNumber *)absoluteValue:(NSNumber *)input {
return [NSNumber numberWithDouble:fabs([input doubleValue])];
}

如果你好奇它们在 abs ()函数中是做什么的:

char abs(char i) {
return -(i & 128) ^ i;
}