scanf()나 printf()를 이용해서 값을 받거나 출력할 때 이 형식을 지정하기위해 사용하는 지정자에대해 일부 정리.
더 정확한 내용은 반드시 마이크로소프트 문서 등등 참고할것!!
형식 사양 구문: 'printf' 및 'wprintf' 함수
Microsoft C 런타임 'printf' 및 'wprintf' 함수의 형식 지정자 구문을 설명합니다.
learn.microsoft.com
%[flags][width][.precision][size]type
형식 지정자의 형태는 다음의 형태를 띄며 이를 분해하여 살펴보겟음.
- 형식 지정자는 우선 "%"로 시작함
- [flags] : 플래그 지정
- [width][.precision] : 너비,소숫점 자리수 지정
- [size] : 인수 크기 사양
- type : 형식 변환 지정자
형식 변환 지정자
입력/출력할 데이터의 형식(Type)이 무엇인지 정의하는 부분.
해당 부분을 배울 때 가장 먼저 접하게 될 부분이다.
예를 들면 %d이면 10진수가 되는것처럼 형식을 지정하는 부분.
익숙한 타입 몇가지를 나열하면 다음과 같다.
| 형식 | |
| d | 10진수 정수 |
| f | 부동 소수점(float, double) |
| c | 단일 문자(char) |
| s | 문자열(string) |
플래그 지시문
부호를 출력할것인지, 왼쪽 정렬할것인지 아니라면 빈부분을 채울것인지를 지정
| 형식 | 의미 |
| - | 왼쪽 정렬 |
| + | 접두사 부호 출력(음수일때 -, 양수일때 +) |
| 0 | 최소 너비가 주어졌을 때, 빈 부분을 채움(왼쪽정렬시 나오지않음) |
너비, 소수점 자리수 지정
[width][.precision] 두가지 부분을 묶어서 볼텐데, 정수형은 소수점 자리수가 없으니 width만 지정한다.
너비와 소숫점은 정수 숫자로 표현하게 된다
width는 출력될 문자 수 전체를 지정하며, 최소 몇칸을 지정한다.
예시
- printf("%05d", 123);
-> 출력결과는 '00123' 맨앞의 숫자0은 플래그 지시문이고 너비는 5이므로
세자리수 123을 출력하고 왼쪽 두칸을 00으로 채움.
소수점 자리수는 비슷하지만 기본적으로 공간이 남으면 0으로 채운다.
예시
- printf("'%10.7f'", 123.456);
-> 출력결과는 '123.4560000' 소수점 자리수가 7이기 때문에 뒤로 0이 4개 더 붙는것을 볼 수 있다.
눈여겨볼점은 너비가 10인데 출력결과는 소수점을 포함한 11문자인것으로, 즉 너비는 출력할 최소한의 글자수인것이다.
인수 크기 사양
해당 내용은 생각보다 복잡하여 대강 개념만 이해해보았음.
[size] 에 해당하는 부분으로 출력보다는 입력에 사용되며 값의 크기를 지정한다.
이부분이 조금 복잡한데 정수만 살펴보면
우리가 보통 출력을 배울 때 int는 %d, long int는 %ld, long long int는 %lld로 배우게 되는데
이를 분해해서 이해할 필요가 조금 있다.
%ld를 예시로 들게 되면
l은 크기가 long int의 크기를, d는 부호있는 정수(signed decimal)로 출력하라는 뜻이 된다.
마찬가지로 %lld는 ll이 long long int 이고 d는 부호있는 정수로 출력하라는것이 되는것이다.
lld를 llu(unsigned decimal)로 변경하면 컴퓨터는 주어진 수를 부호없는 정수로 해석하게 될 것이다.
이는 C언어가 플랫폼에 따라 타입의 크기를 다르게 이용하도록 만들어졌기 때문인데(이식성) 이는 심심할때 따로 알아보도록하자...
언제 쓰이게 될지는 모르지만 확실하게 알아놓는게 좋을것같아 파고들어봄
'개발 > 내일배움캠프' 카테고리의 다른 글
| C++ 인벤토리, 제작시스템 구현해보기 1 (0) | 2026.03.12 |
|---|---|
| 자주 볼거같은 Character Movement컴포넌트 속성들 기록 (0) | 2026.02.27 |
| 언리얼 구식 입력 시스템(UE4이전의 방식) (0) | 2026.02.24 |
| 언리얼 오디오 리스너, 소리 감쇠(어테뉴에이션) (0) | 2026.02.23 |
| 02/13 나만의 인터랙티브 공간 만들기(사격장) (0) | 2026.02.13 |