#include <cmath> - PullRequest
       18

#include <cmath>

0 голосов
/ 27 марта 2011

Что не так с фрагментом кода ниже, что VS2010 не скомпилирует его?

int m = sqrt( n );

(я пытаюсь выяснить, является ли целое число простым ...)

1 Ответ

5 голосов
/ 27 марта 2011

Вам нужно передать определенный тип с плавающей запятой в sqrt - нет целочисленной перегрузки.Используйте, например:

long double m = sqrt(static_cast<long double>(n));

Поскольку вы включаете cmath, а не math.h Я предполагаю, что вы хотите c ++.Для C вам нужно использовать, например:

double m = sqrt((double) n);

Ошибка, которую вы получаете, просто означает, что компилятор не может автоматически выбрать функцию sqrt для вас - переданное вами целое число необходимо преобразовать вТип с плавающей запятой, и компилятор не знает, какой тип с плавающей запятой и sqrt функцию он должен выбрать.

...