인프런 커뮤니티 질문&답변

ohjaehokor님의 프로필 이미지
ohjaehokor

작성한 질문수

홍정모의 따라하며 배우는 C언어

10.6 2차원 배열 연습문제

MONTHS나 YEARS로 나눌때, double을 쓰신 이유가 뭔가요??

작성

·

374

1

해당 문제에서 평균 온도를 구하실때

avg_temp /= (double)MONTHS;

avg_temp /= (double)YEARS;

 

이렇게 작성하셨는데, (double)을 추가하신 이유가 있을까요?? 없어도 잘 작동하여서 여쭤봅니다. 답변해주시면 감사하겠습니다.

 

 

답변 1

1

안녕하세요, 답변 도우미 Soobak 입니다.

지난번 질문을 해주셨을 때가 불과 6일 전인데, 그때보다 진도를 많이 나가셨네요!
열심히 학습하시는 모습이 멋있으세요. 😁

질문해주신 내용에 대한 답변은 다음과 같습니다.

avg_temp 변수는 double 자료형이고, MONTHSYEARS#define 을 통해 정의된 기호적 상수입니다.
나눗셈 과정에 있어서 소숫점이 절삭되는 부분에 대해서는 이미 충분히 학습하신 것이 느껴지므로, 나머지 부분에 대해서만 설명해드리도록 하겠습니다.

말씀하신대로, 형변환 연산자(double) 를 명시하지 않아도 소숫점 이하가 절삭되지 않고 실수형으로 정확히 출력이 됩니다.
이는, 강의 5.11 자료형 변환 에서 교수님께서 설명해주셨듯이, 컴파일러가 자동으로 형변환을 진행해주기 때문입니다.

그럼에도 불구하고 (double) 형변환 연산자를 명시한 이유는 강의 5.11 자료형 변환9:39 부분에서 교수님께서
"컴파일러가 자동으로 형변환을 해주는 것은 프로그래머의 의도가 명확하지 않을 수 있습니다"
"의도적으로 형변환을 한 것인지, 실수를 한 것인지 구분할 수 없기 때문에 형변환 연산자를 사용하여 명시적으로 형변환을 해주는 것이 더 좋은 방법입니다."
라고 설명해주시는 것처럼 프로그래머의 의도를 더 명확하게 표현하기 위함입니다.

이미 학습하셨던 내용을 잠시 깜빡하게 되는 것을 절대, 절대! 개의치 마시고 얼마든지 편하게 질문해주시길 바랄게요.
질문해주시는 과정에서 복습을 할 수 있게 되고, 더 오랫동안 기억에 남을 수 있도록 각인이 되는 좋은 효과가 있으니까요!
저 또한 질문자님의 질문들에 답변을 드리는 것이 뿌듯하고 재밌습니다.

참고로 여기서 또 재미있는 점이 있습니다. 😁 #define 으로 정의된 부분은 '기호적 상수' 라고 부르는데요, 이는 추후 16.3 #define 매크로 강의에서 자세히 학습하시게 됩니다. 해당 강의에 재미있는 내용들이 많아요!

꾸준히 학습하시는 모습이 참 멋있으시고, 질문해주실 때마다 참 반갑네요.
질문해주셔서 감사하고, 추가적으로 궁금하신 점 있으시면 또 편하게 댓글 남겨주세요! 😁 화이팅!

ohjaehokor님의 프로필 이미지
ohjaehokor

작성한 질문수

질문하기