Обращение к Преобразование в абсолютное значение в 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