Подтвердить что ты не робот

Абсолютное значение NSInteger

Обращение к Преобразование в абсолютное значение в Objective-C Мне интересно, есть ли функции для типов typedefed NS. Или abs(NSInteger) ладно? Это безопасно для архитектуры?

4b9b3361

Ответ 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