почему я не могу запустить программу с кодом 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
, то программа ничего не показывает
math.h
находится в libc6-dev
пакет, удостоверьтесь, что он установлен.
walt@bat:~(0)$ dpkg -S /usr/include/math.h
libc6-dev:amd64: /usr/include/math.h
Не называйте свою программу "тестом", так как уже существует "тестовая" команда Linux, и это будет, вероятно, вызвано в предпочтении к Вашей скомпилированной программе. Если запущение "теста =" приводит к жалобе на унарный оператор, Вы запускаете встроенный "тест". Переименуйте свой "тест" как "sqrt" и попытайтесь выполнить "./sqrt".
Программа ничего не отображает, потому что Вы не сбрасываете вывод. Для этого замените эту строку:
printf("%d", c);
с
printf("%d\n", c);