Referring to Convert to absolute value in Objective-C I'm wondering if there are functions for NS typedefed types. Or is abs(NSInteger)
okay? Is it architecture-safe?
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
回答1:
Use ABS() macro, which is defined in NSObjCRuntime.h, it is architecture-safe.
回答2:
You can use Foundation’s ABS() macro:
NSInteger a = 5;
NSInteger b = -5;
NSLog(@"%ld %ld", ABS(a), ABS(b));
回答3:
While the two posted answers are absolutely correct about using the ABS()
macro, it should certainly be noted that NSIntegerMin
, whose true absolute value can not be represented as an NSInteger
returns itself when the ABS()
function is called.
Presuming a 64-bit system:
NSLog(@"ld", ABS(NSIntegerMin));
// prints: -9223372036854775808
NSLog(@"%ld", ABS(NSIntegerMin + 1));
// prints: 9223372036854775807, which == NSIntegerMax
The same results will happen on a 32-bit system, but the numbers will be +2147483647 and -2147483648
标签:
objective-c