相关疑难解决方法(0)

为什么gdb将sqrt(3)评估为0?

由Wolfram Alpha估算的3的平方根:

1.7320508075688772935274463415058723669428052538103806280558...
Run Code Online (Sandbox Code Playgroud)

当我sqrt(3)在C中时,它的计算结果为0.为什么?

编辑4:这是你如何在GDB中重现这个问题.创建test.c如下:

#include <stdio.h>                                                                                                                                                                      
#include <math.h>

int main()
{
  printf("sqrt(3): %f\n", sqrt(3));
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

编译:

gcc -O0 -g -Wall -pedantic -ansi -lm -o test test.c
Run Code Online (Sandbox Code Playgroud)

运行调试器:

gdb test
Run Code Online (Sandbox Code Playgroud)

在控制台输入:

(gdb) break test.c:6
Breakpoint 1 at 0x400578: file test.c, line 6.
(gdb) r
Starting program: /home/pdedecker/Desktop/test   
Breakpoint 1, main () at test.c:6
6         printf("sqrt(3): %f\n", sqrt(3));
(gdb) print sqrt(3)
$1 = 0
(gdb) s
sqrt(3): 1.732051
Run Code Online (Sandbox Code Playgroud)

我的GDB版本是GNU gdb (GDB) SUSE (7.1-3.12) …

c eclipse math gdb

16
推荐指数
2
解决办法
3666
查看次数

标签 统计

c ×1

eclipse ×1

gdb ×1

math ×1