2016-02-01 17 views
5

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 ...)?

+0

Nie mogę odtworzyć wyników, działając na symulatorze. – Avi

+1

Rzeczywiście powielałem na iPhone 6s, Xcode 7.2. Oczekiwanie na odpowiedź)) – sage444

+3

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

Odpowiedz

3

Było prawie pewne, że wystąpił błąd konsoli lldb w Xcode 7, a dla tego stworzono a ticket.

Problem nie występuje już w Xcode 8.0.

Powiązane problemy