남들이 안해본것을 해서 궁극적인 지식의 완성을 목표로 하는 블로그입니다. 제품리뷰 , IT, 프로그래밍 관련글을 포스팅합니다. 또한 자기만 읽으려고 만든 정리 노트식의 글들을 싫어합니다. 비전공자나 처음 본 사람도 최대한 이해할 수 있도록 프로그래밍 관련 글들을 쉽게 적으려고 노력하고 있습니다. 보안 계통과 컴퓨터의 Low-Level 한 분야에 관심이 많습니다.
저번 강의에서 double 값을 표기할때
printf는 %f 나 %lf 둘다 써도 상관없지만 scanf는 %lf 로 구분해서 써줘야 한다고 했는데요.
저도 항상 하면서 무슨 차이인지 의문이였는데...
알아두는 편이 좋을거 같아서 추가로 작성합니다.
우선 C언어의 과거로 넘어갈 필요로 있는데요..
원래 print는 double 형이건 float형이건 간에 %f 하나밖에 없었는데 C99(99년도) 표준에서 %lf 가 추가됬습니다.
결국 %f 와 %lf는 처리방식이 동일합니다.
즉.. printf에서 float값이 전달되면 기본 인자 진급을 통해 자동으로 double 형으로 진급합니다.
(진급이라는 말을 쓰는 이유는 double 형이 float 형보다 더 큰 개념이라 그런거 같습니다)
이외에도 규칙이 몇가지 있는데.. 아직 배우진 않았지만 포인터는 진급대상에서 제외입니다.
이정도만 알아두시면 될거같습니다.
아무튼 printf에서 %lf 를 쓰건 %f를 쓰건 동일한 매커니즘으로 작동한다는거죠.
scanf에서는 인수로 포인터를 받으니 (메모리 주소로 입력)
전달 받는 포인터의 자료형을 알 수가 없고 이를 명시해주기 위해
%lf 와 %f 로 구분을 하는겁니다.
이해가 어려우시겠지만 강의를 잘따라오면 이해하실 수 있을거에요 ^^ 화이팅!
[C언어 강좌] #4-2 scanf와 printf에서 %f, %lf의 차이점
저번 강의에서 double 값을 표기할때
printf는 %f 나 %lf 둘다 써도 상관없지만 scanf는 %lf 로 구분해서 써줘야 한다고 했는데요.
저도 항상 하면서 무슨 차이인지 의문이였는데...
알아두는 편이 좋을거 같아서 추가로 작성합니다.
우선 C언어의 과거로 넘어갈 필요로 있는데요..
원래 print는 double 형이건 float형이건 간에 %f 하나밖에 없었는데 C99(99년도) 표준에서 %lf 가 추가됬습니다.
결국 %f 와 %lf는 처리방식이 동일합니다.
즉.. printf에서 float값이 전달되면 기본 인자 진급을 통해 자동으로 double 형으로 진급합니다.
(진급이라는 말을 쓰는 이유는 double 형이 float 형보다 더 큰 개념이라 그런거 같습니다)
이외에도 규칙이 몇가지 있는데.. 아직 배우진 않았지만 포인터는 진급대상에서 제외입니다.
이정도만 알아두시면 될거같습니다.
아무튼 printf에서 %lf 를 쓰건 %f를 쓰건 동일한 매커니즘으로 작동한다는거죠.
scanf에서는 인수로 포인터를 받으니 (메모리 주소로 입력)
전달 받는 포인터의 자료형을 알 수가 없고 이를 명시해주기 위해
%lf 와 %f 로 구분을 하는겁니다.
이해가 어려우시겠지만 강의를 잘따라오면 이해하실 수 있을거에요 ^^ 화이팅!
'프로그래밍 강좌 > C' 카테고리의 다른 글
COMMENT WRITE