很久以前就问过这个问题,但没有得到真正的回答。当我尝试在gdb中评估数学函数时,我得到了一些奇怪的错误结果。我开始使用以下文件
#include <math.h>
#include <stdio.h>
int main()
{
double x ;
x=sin(3.14) ;
printf("%f",x) ;
}
在它上面启动gdb并在printf之前中断。现在在gdb提示符下:
(gdb) p x
$1 = 0.0015926529164868282
(gdb) p sin(3.14)
$2 = 1074339512
(gdb) p ((double(*)())sin)(3.14)
$3 = 3.1399999999999997
有人对此有解释吗?我如何评估gdb中的sin函数,如果我不知道为什么?
编辑:之前提供的答案似乎不起作用,至少对罪而言(见我的评论)。