NSInteger的绝对值

use*_*500 35 objective-c

参考Objective-C中的转换为绝对值我想知道NS typedefed类型是否有函数.还是abs(NSInteger)没事?它是架构安全的吗?

Dav*_*eyl 66

使用在NSObjCRuntime.h中定义的ABS()宏,它是架构安全的.


小智 18

你可以使用Foundation的ABS()宏:

NSInteger a = 5;
NSInteger b = -5;
NSLog(@"%ld %ld", ABS(a), ABS(b));
Run Code Online (Sandbox Code Playgroud)

  • 我从来不知道:+1。无论如何,来自 C 库的 `abs()` *function* 是不正确的,因为它的参数是一个 C `int`,在 OS X 开发环境中通常是 32 位,而 NSInteger 与架构的宽度相同,即 32 或64 位。 (2认同)