2017-07-28 31 views

回答

1

看起來GDB沒有訪問合適的調試信息的權限。其結果是,它假定sqrt是返回int功能:

(gdb) ptype sqrt 
type = int() 

您可以使用一個投來告訴GDB正確的類型:

(gdb) print ((double (*)(double))sqrt)(2) 
$1 = 1.4142135623730951 

或者你可以加載適當的調試信息。

+0

儘管我使用https://stackoverflow.com/questions/5122570/why-does-gdb-evaluate-sqrt3-to-0複製了該帖子,但該帖子接受的答案(使用__sqrt)不適用於-1.0:它返回-165394784。 Florian Weimer的答案適用於我。 –