저번 강의에서 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' 카테고리의 다른 글
[C언어 강좌] #5-2 [2진수 변환, 1의보수, 2의보수 원리 설명] (0) | 2019.11.12 |
---|---|
[C언어 강좌] #5-1 상수 이용하기(Constant) (0) | 2019.11.10 |
[C언어 강좌] #4-1 scanf로 입력받기 (0) | 2019.11.08 |
[C언어 강좌] #3 변수(variable) (0) | 2019.11.02 |
[C언어 강좌] #2-2 printf 로 마음대로 출력하기 (0) | 2019.11.01 |