Обращение к Преобразование в абсолютное значение в Objective-C Мне интересно, есть ли функции для типов typedefed NS. Или abs(NSInteger)
ладно? Это безопасно для архитектуры?
Абсолютное значение NSInteger
Ответ 1
Используйте макрос ABS(), который определен в NSObjCRuntime.h, он безопасен для архитектуры.
Ответ 2
Вы можете использовать макрос Foundations ABS():
NSInteger a = 5;
NSInteger b = -5;
NSLog(@"%ld %ld", ABS(a), ABS(b));
Ответ 3
В то время как два опубликованных ответа абсолютно правильны относительно использования макроса ABS()
, следует, конечно, отметить, что NSIntegerMin
, истинное абсолютное значение которого не может быть представлено как NSInteger
, возвращает себя, когда функция ABS()
называется.
Предполагая 64-битную систему:
NSLog(@"ld", ABS(NSIntegerMin));
// prints: -9223372036854775808
NSLog(@"%ld", ABS(NSIntegerMin + 1));
// prints: 9223372036854775807, which == NSIntegerMax
Те же результаты будут происходить в 32-битной системе, но цифры будут +2147483647 и -2147483648