在Objective-C中转换为绝对值

在Objective-C中转换为绝对值,objective-c,Objective C,如何在Objective-C中将负数转换为绝对值 i、 e -十, 变成 10?根据变量的类型,abs(int),labs(long),llabs(long-long),imaxabs(intmax_t),fabsf(float),fabs(double),或fabsl(double) 这些函数都是C标准库的一部分,所以在Objto-C和SurvivC中都是这样的(通常也可以在C++程序中使用)。 (唉,这里没有habs(short)函数。或者scabs(签名字符)) 苹果和GNU的Objec

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

i、 e

-十,

变成


10?

根据变量的类型,
abs(int)
labs(long)
llabs(long-long)
imaxabs(intmax_t)
fabsf(float)
fabs(double)
,或
fabsl(double)

这些函数都是C标准库的一部分,所以在Objto-C和SurvivC中都是这样的(通常也可以在C++程序中使用)。 (唉,这里没有

habs(short)
函数。或者
scabs(签名字符)


苹果和GNU的Objective-C头文件还包括一个与类型无关的
ABS()
宏。但是,我不建议使用
ABS()
,因为它不能保证副作用安全。例如,
ABS(a++)
将有一个未定义的结果



如果你使用C++或ObjuleC++,你可以在代码< >/Cuth>头上使用“<代码> STD::Abess”(<代码> >,它是针对所有标准整数和浮点类型的模板。

< P>可以使用这个函数得到绝对值:

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

或者你可以使用ABS宏,它可以在任何数字类型上工作。@ugsomethingsomething
ABS()
对所有编译器的副作用都不安全,这就是为什么我不建议使用它。它实际上是:fabsf(double)fabs(float)@Alex不,这些是数学中的定义。h:
extern float fabsf(float);外部双晶圆厂(双)@salvadodali:这样做没有错;这个问题不费吹灰之力,也没有遵循SO指南,而答案是深入和正确的。