michael3401   2년 전

아래 소스코드로 코딩했는데 컴파일 해도 출력값도 똑같이 나오는데 어디가 잘못된 것인지 모르겠습니다.

추가로 c에서는 피연산자와 연산결과의 자료형이 일치한다고 들었는데 그렇다면 아래 소스코드 10번째 줄에서도 피 연산자(12,N,3,3,6)가 전부 정수이기 때문에 결과값의 자료형도 정수형이어야 하지 않나요?

예를 들면 이 문제와 별개로 제가 컴파일러에서

#include<stdio.h>
#include<math.h>
int main(void)
{
int N;
double n;

scanf("%d", &N);
n=sqrt(N);

printf("%f", n);
return 0;
}

위와 같은 소스코드로 코딩했는데 제가 8을 입력했을때 저는 sqrt(N)의 결과값도 정수형 즉 2로 연산된뒤 n의 자료형에 맞게 2.000000 실수형으로 변환되어 출력 될 줄 알았는데 출력값이 2.828427로 나왔습니다. 그래서 제가 든 생각은 sqrt함수 자체가 int 자료형을 double 자료형으로 변환해주는 기능이 있다고 추측 했는데 제 추측이 맞나요?

apfhsk987   2년 전

위에서 N은 int고 n은 double 이라 n = sqrt(N)

은 입력값이 정수로 들어가고 출력값은 입력값의 **0.5 된 double 값이 나오는 것이 맞습니다..

int로 출력 받고 싶으시면

n을 int n 으로 선언하시고

printf에서 %d로 출력하시면 되용

댓글을 작성하려면 로그인해야 합니다.