Вам необходимо установить связь с математической библиотекой (используйте '-lm' в командной строке). В случае констант компилятор, вероятно, умен и предварительно вычисляет sqrt (2.0) (так что код, который скомпилирован, по сути, 'b = 1.414 ...;')
Компилировать с помощью:
gcc -Wall -o test2 test2.c -lm
Вам необходимо выполнить компоновку с математической библиотекой.
Используйте команду gcc -Wall -o "test2" "test2.c" -lm
, которая, вероятно, исправит это.
Это включает математическую библиотеку в дополнение к стандартной библиотеке времени выполнения C. В большинстве систем математическая библиотека исторически является отдельной сущностью, которую нужно явно запрашивать.
Возможно, вам потребуется добавить -lm
при компиляции. Когда вы извлекаете квадратный корень из константы, компилятор оптимизирует код, извлекая квадратный корень во время компиляции, поэтому он вообще не использует sqrt
.