Jak przekonwertować liczbę ujemną na wartość bezwzględną w celu C?
to znaczy
-10
staje się
10?
Jak przekonwertować liczbę ujemną na wartość bezwzględną w celu C?
to znaczy
-10
staje się
10?
Odpowiedzi:
W zależności od typu zmiennej, jednego abs(int)
, labs(long)
, llabs(long long)
, imaxabs(intmax_t)
, fabsf(float)
, fabs(double)
, lub fabsl(long double)
.
Te funkcje są częścią standardowej biblioteki C, a zatem są obecne zarówno w Objective-C, jak i zwykłym C (i są ogólnie dostępne również w programach C ++).
(Niestety, nie ma żadnej habs(short)
funkcji. Albo scabs(signed char)
w tym przypadku ...)
Nagłówki Objective-C firmy Apple i GNU zawierają również ABS()
makro, które jest niezależne od typu. Nie polecam ABS()
jednak używania, ponieważ nie gwarantuje się, że będzie bezpieczny pod względem skutków ubocznych. Na przykład ABS(a++)
będzie miał niezdefiniowany wynik.
Jeśli używasz C ++ lub Objective-C ++, możesz wprowadzić <cmath>
nagłówek i użyć std::abs()
, który jest szablonowany dla wszystkich standardowych typów liczb całkowitych i zmiennoprzecinkowych.
ABS()
nie jest jednak bezpieczny dla wszystkich kompilatorów pod względem skutków ubocznych i dlatego nie polecam go używać.
extern float fabsf(float); extern double fabs(double);
Możesz użyć tej funkcji, aby uzyskać wartość bezwzględną:
+(NSNumber *)absoluteValue:(NSNumber *)input {
return [NSNumber numberWithDouble:fabs([input doubleValue])];
}