<分区>
Possible Duplicate:
Why does gdb evaluate sqrt(3) to 0?
这里是 C 新手。必须有一个明显的解释,为什么 gdb 在尝试内联使用 math.h 函数时给出奇怪的输出。例如,下面的 fabs
函数应该取绝对值,并返回一个 double 值。
(gdb) p cos(2*3.141/4)
$13 = 1073291460
(gdb) p fabs(-3)
$14 = 0
(gdb) p fabs(3)
$15 = 0
(gdb) p fabs(3.333)
$16 = 1
(gdb) p (double) fabs(-3.234)
$17 = 1
(gdb) p (double) fabs((double)-3.234)
$18 = 1
(gdb) p ((double(*)(double))fabs)(-3)
$19 = 682945
我使用的代码包含 math.h,实际代码似乎可以正确执行,尽管在 gdb 中内联的相同代码会产生奇怪的结果。我可以忽略它,但这似乎是一个很好的学习机会。