2011-03-27 5 views
0

VS2010이 컴파일하지 않는 코드 스 니펫의 문제점은 무엇입니까? 어떤 정수 과부하가 없습니다 - #include <cmath>

int m = sqrt(n); 

당신은 sqrt에 특정 부동 소수점 형식을 전달해야

+0

표시 한 코드가 컴파일되지 않는 이유를 결정하는 데 필요한 정보가 충분하지 않습니다. 어떤 오류 메시지가 나타 납니까? –

+0

오류 : C2668 : 'sqrt': 오버로드 된 함수에 대한 모호한 호출 – Joshua

+0

'n'이 잘못된 유형 인 것처럼 들립니다. @ Erik의 대답을 확인하십시오. –

답변

5

(나는 ... 정수가 소수 여부를 확인하는 것을 시도하고있다). 예컨대 사용

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

당신은 내가 당신이 C++를 원하는 있으리라 믿고있어 cmath하지 math.h을 포함한다. C를 들어, 예를 사용해야합니다 :

double m = sqrt((double) n); 

단순히 얻을 오류는 컴파일러가 자동으로 당신을 위해 sqrt 기능을 선택 할 수 없음을 의미합니다 - 당신이 필요 부동 소수점 형식으로 변환 할 통과 정수를, 컴파일러는 어떤 부동 소수점 유형과 sqrt 함수를 선택해야하는지 알지 못합니다.

관련 문제