Jak przekonwertować liczbę ujemną na wartość bezwzględną w celu C?
to znaczy
-10
staje się
10?
objective-c
redconservatory
źródło
źródło
Odpowiedzi:
W zależności od typu zmiennej, jednego
abs(int)
,labs(long)
,llabs(long long)
,imaxabs(intmax_t)
,fabsf(float)
,fabs(double)
, lubfabsl(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. Alboscabs(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 polecamABS()
jednak używania, ponieważ nie gwarantuje się, że będzie bezpieczny pod względem skutków ubocznych. Na przykładABS(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.źródło
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ą:
źródło