[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 로 구분을 하는겁니다.

 

이해가 어려우시겠지만 강의를 잘따라오면 이해하실 수 있을거에요 ^^ 화이팅!

 

 

COMMENT WRITE