Jeśli w konsoli debugowania Xcode za wpisujęW Objective-C, fabsf() ma zły wynik typ
(lldb) p (float)fabsf(-5.0f)
(float) $22 = 0
(lldb) p (double)fabsf(-5.0f)
(double) $23 = 5
gdzie pierwszy wynik rzucając się unosić (bez odlewania, komenda p
nie może rozpoznaje typ zwracany fabsf
) jest niepoprawny bez względu na parametr.
Ale w nagłówkach bibliotek typ zwrotu fabs
jest wyraźnie zmiennoprzecinkowy. Czy ktoś może mi to wyjaśnić?
ios9.2: math.h
...
extern float fabsf(float);
extern double fabs(double);
extern long double fabsl(long double);
...
Czy istnieje jakiś mechanizm lldb lub problem, który nie jestem świadomy, czy naprawdę to kwestia implementacji języka (Chyba nie ...)?
Nie mogę odtworzyć wyników, działając na symulatorze. – Avi
Rzeczywiście powielałem na iPhone 6s, Xcode 7.2. Oczekiwanie na odpowiedź)) – sage444
Powtarzalne w lldb pod OS X bezpośrednio. To samo dzieje się z innymi funkcjami zwracającymi 'float' (na przykład' fmaxf') i rzutowaniem. Sugerowałbym błąd i powinieneś zgłosić się do Apple (bugreport.apple.com). – CRD