Хотя два опубликованных ответа абсолютно верны в отношении использования макроса ABS()
, следует, конечно, отметить, что NSIntegerMin
, истинное абсолютное значение которого не может быть представлено как NSInteger
, возвращает себя, когда функция ABS()
Предполагается, что 64-разрядная система:
NSLog(@"ld", ABS(NSIntegerMin));
// prints: -9223372036854775808
NSLog(@"%ld", ABS(NSIntegerMin + 1));
// prints: 9223372036854775807, which == NSIntegerMax
Те же результаты будут получены в 32-разрядной системе, но числа будут +2147483647 и -2147483648