• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

간단한 질문 하나 드립니다..^^

20.05.31 17:59 작성 조회수 177

2

교수님 안녕하세요^^ 제가 c++을 늦게 공부하는 기계공학생이라 사소한게 잘 이해 안되는 부분이 있네요..^^

cout 이 std 네임 스페이스 안에 있는 함수 잖아요.(출력함수)

근데 왜 그냥 setprecision()만하면 효과가 없고

cout << setprecidion() 해야만 효과가 있나요? 

cout을 그냥 단순 출력 함수로 이해하면 안되나요?

답변 2

·

답변을 작성해보세요.

3

Hello Yeo님의 프로필

Hello Yeo

2020.06.01

안녕하세요? 교수님은 아니지만...
왜 이렇게 해야하는 걸까? 충분히 궁금증이 들만하다 생각합니다.
하지만 찾아보니 2.5 를 진행하고 계셔서 아직 이해하기 힘드실듯 합니다...

일단 cout은 함수는 아니고 객체(object)입니다. (iostream 을 open document 하시면 확인가능합니다.)
때문에 setprecision 만을 통해서는 cout의 속성(이 경우 사진의 _Prec을 말합니다. streamsize는 long long 입니다.)을 바꾸지 못합니다.
(ios_base 에서 확인가능)
이를 위해서는 cout.precision(15); 이런 식으로 해주어야하는데
cout <<setprecision(15); 을 하시면 << 연산자가 위와 비슷하게 행동하도록 오버로딩(iomanip에 선언)되어 있습니다.

개념들을 제가 알려드리기에는 앞으로 배우실 내용이니 조금 그렇고
(10.6 혹은 12.1) 정도 까지 보신 후에 다시 답변을 보시면 이해하실 수 있을 것이라 생각합니다.
https://codecat.tistory.com/entry/cout-endl-%EC%9D%98-%EC%9B%90%EB%A6%AC
http://www.cplusplus.com/reference/ios/ios_base/precision/
http://www.cplusplus.com/reference/iomanip/setprecision/
참고했던 자료입니다.

*open document를 하시려면 iostream에 마우스를 가져다 대시고 우클릭을 눌러보세요.
*궁금한 자료형이 있을 때 비슷한 방식으로 우클릭을 하시면 'go to definition' 'peak definition' 등으로 뭔지 확인하실 수 있습니다.

좀 더 정확하게 알려드리고 싶고 제가 알고 싶으나... 아직 setprecision이 어떻게 구체적으로 _Prec에 영향을 주는지(혹은 precision과 연관되어있는지)에 대한 것을 못찾았네요.

0

원성준님의 프로필

원성준

질문자

2020.06.01

와 친절한 답글 감사드립니다. 말씀 하신데로 아직 객체가 뭔지, 속성이 뭔지, 함수가 뭔지 모르는 상태에서 내용이 완전히 이해가 되진 않네요...^^ 다른 강의들 공부한 후에 다시한번 제가 궁금했던 내용들 그리고 달아주신 답글 읽어 보면 큰 도움이 될것 같아요. 감사드립니다!!^^