Ответ 1
В зависимости от типа вашей переменной один из abs(int)
, labs(long)
, llabs(long long)
, imaxabs(intmax_t)
, fabsf(float)
, fabs(double)
или fabsl(long double)
.
Эти функции являются частью стандартной библиотеки C и поэтому присутствуют как в Objective-C, так и в обычном C (и обычно доступны в программах на С++).
(Увы, функции habs(short)
нет, или scabs(signed char)
, если на то пошло...)
Заголовки Apple и GNU Objective-C также включают макрос
ABS()
, который является агностиком типа. Я не рекомендую использовать ABS()
, так как он не гарантированно защищен от побочных эффектов. Например, ABS(a++)
будет иметь результат undefined.
Если вы используете С++ или Objective-C ++, вы можете ввести заголовок <cmath>
и использовать std::abs()
, который настроен для всех стандартных типов с целыми числами и с плавающей точкой.