在 Linux 中使用 math.h 函数?sqrt()

在 Linux 中使用 math.h 函数?sqrt()

为什么我不能用 sqrt (a) 运行程序

代码 :

    #include <stdio.h>                                                                               
  1 #include <math.h>
  2 int main ()
  3 {         
  4     int a, b, c;
  5     scanf("%d %d ", &a, &b);
  6     c = sqrt(a) + b;
  7     printf("%d", c);
  8     return 0;
  9 }

错误 :

/usr/bin/ld: /tmp/ccfUQsrW.o: in function `main':
test.c:(.text+0x42): undefined reference to `sqrt'
collect2: error: ld returned 1 exit status

如果我编译这个程序

:!gcc test.c -o ./test -lm

那么程序就不会显示任何内容

答案1

不要将程序命名为“test”,因为 Linux 中已经有一个“test”命令,并且它很可能会被优先于编译后的程序调用。如果运行“test a =”导致出现一元运算符错误,则表示您正在运行内置的“test”。将“test”重命名为“sqrt”,然后尝试运行“./sqrt”。

答案2

math.h位于libc6-dev包中,请确保它已安装。

walt@bat:~(0)$ dpkg -S /usr/include/math.h 
libc6-dev:amd64: /usr/include/math.h

答案3

由于您没有刷新输出,因此程序不会显示任何内容。为此,请将此行替换为:

printf("%d", c);

printf("%d\n", c);

相关内容