参考Convert to absolute value in Objective-C我想知道NS typedefed类型是否有函数。或abs(NSInteger)
好吗?它是架构安全的吗?
答案 0 :(得分:64)
使用在NSObjCRuntime.h中定义的ABS()宏,它是架构安全的。
答案 1 :(得分:18)
您可以使用Foundation的ABS()宏:
NSInteger a = 5;
NSInteger b = -5;
NSLog(@"%ld %ld", ABS(a), ABS(b));
答案 2 :(得分:3)
虽然两个发布的答案对于使用ABS()
宏绝对正确,但应该注意NSIntegerMin
,其真实绝对值不能表示为NSInteger
返回调用ABS()
函数时。
假设一个64位系统:
NSLog(@"ld", ABS(NSIntegerMin));
// prints: -9223372036854775808
NSLog(@"%ld", ABS(NSIntegerMin + 1));
// prints: 9223372036854775807, which == NSIntegerMax
在32位系统上会出现相同的结果,但数字将为+2147483647和-2147483648