Управление печатью с помощью C - PullRequest
0 голосов
/ 24 сентября 2011

когда я выполняю приведенный ниже код, компилятор возвращает сообщение «(.text + 0x31): неопределенная ссылка на« sqrt »». но если я уберу q *, компилятор правильно выдаст мне 8.000000 я пытаюсь заставить программу умножить INCREMENT на 1 (и, в конечном счете, на 2 и 3, когда я напишу цикл).

почему ниже не работает?

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

#define INCREMENT   64

int main () 
{
    int q = 1;
    printf("%f", sqrt(q*INCREMENT));
    return 0;
}    

Ответы [ 2 ]

3 голосов
/ 24 сентября 2011

Возможно, вам нужна ссылка на математическую библиотеку. (хотя я думал, что Visual C ++ делает это автоматически ...)

Причина, по которой он работает без q, заключается в том, что компилятор оптимизирует sqrt, поскольку он является константой.

0 голосов
/ 24 сентября 2011

Код правильный c код. Я протестировал его под vs 2010, и он вернул значение 8. Однако это не правильный код c ++. sqrt становится неоднозначным, когда аргумент является целым числом. Возможно ли, что ваш исходный файл имеет расширение .cpp вместо расширения .c ?

...