일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- Kotlin
- CS
- 포인터
- 티스토리
- Programming
- VS ERROR
- 지식나눔강좌
- Tips프로그래밍강좌
- c#
- c++
- Direct2D
- 문법
- doit코틀린프로그래밍
- Visual Studio
- 김성엽
- 알고리즘
- Javascript
- 백준
- tipssoft
- 함수
- 연산자
- 이지스퍼블리싱
- Desktop
- Tips강좌
- 배열
- Win32
- Windows
- 프로그래밍
- c
- 리뷰
- Yesterday
- Today
- Total
F.R.I.D.A.Y.
C : 왜 교수님들은 double 출력에 %f를 사용할까? 본문
대학 교수님들이 학생들에게 C를 가르칠 때 종종 double을 출력할 때 %lf가 아니라 %f를 사용하는 교수님들이 계신다.
대학 들어와서 교수님들이 왜 double을 계속 %f로 출력할까 생각을 해봤는데 마땅한 이유가 생각이 나지 않았다. 그래서 '표준 안지키는건 교수님들도 똑같구나'하고 있었는데 근래 들어 그 이유를 찾았다.
이 문제는 C언어 표준과 관련이 있는데 사실, %lf는 C99에서 나온 신기술(?)이다. 기존까지는 double을 출력할 때고 %f를 사용했다고 한다.
기존의 C90의 경우 scanf에 double 자료형을 사용하려면 %lf를, printf로 double 자료형을 출력할 때는 %f를 사용해왔다고 한다. 그러나 개발자들이 scanf에서는 %lf를 사용하고 printf에선 %f를 사용하다보니 혼동이 오게 되고 printf를 사용할 때 %lf로 f 전에 l을 추가로 작성하는 경우가 많았다.
그런데 C90에서 %f의 f 전에 l은 정의되지 않은 행동으로 이어진다고 한다. 이러한 문제를 해결하기 위해(+ scanf와 printf에서의 대칭을 맞추기 위해) C99에서 double에 맞춘 %lf 서식 지정자가 추가된 것. 1
사실, printf는 기본 인자 진급이라는 것을 통해 float가 전달되면 double로 작동한다고 한다. 즉, printf의 %lf는 아무 의미 없이 %f와 같다는 것이다.
교수님들이 printf를 사용하실 때 %f를 작성하는 이유도 같은 의미인 듯 하다. 오히려 한 글자를 적게 작성하니 메모리가 부족하던 시대엔 필수라고할 수 있을 듯. 그 시대부터 배워오고 개발을 해오신 분들은 그 습관이 그대로 이어져 내려온 것 2. 교수님들이 그런 것에서 printf로 출력할 때 %f를 사용하시는 듯 하다.
참고
>> http://www.zdnet.co.kr/view/?no=00000039131011
>> https://gigglehd.com/zbxe/10649472
>> https://stackoverflow.com/questions/15614620/c90-doesnt-allow-lf-use-in-printf-why
'DEV > Tip' 카테고리의 다른 글
역슬래시 모양이 달라요(비주얼 스튜디오 글꼴 수정하는 법) (0) | 2019.01.29 |
---|---|
VS ERROR 컴파일도 잘 되는데 빨간 밑줄이 그어져있다(단어자동완성/인텔리센스 오류) (2) | 2019.01.19 |
VS ERROR C4477 : *형식의 인수가 필요하지만 variadic 인수 1의 형식이 *입니다. (0) | 2019.01.16 |
다중 캐럿 사용하기 (0) | 2018.11.30 |
프로그래밍 용어 발음 (0) | 2018.10.28 |