为什么我不能用 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);