TAKEAWAY 8.18 서식 지정자를 정확히 쓰지 않으면 의도하지 않은 동작이 발생할 수 있다.
좋은 컴파일러는 잘못 지정한 서식에 대해 경고 메시지를 출력해 주는데, 이런 경고는 지나치지 말고 해결해야 한다. 또한 세 가지 의미 타입에 대한 특수한 지정자가 있다. 그 중에서도 "%zu"는 굉장히 유용한데 size_t에 대응되는 기본 타입을 몰라도 되기 때문이다.
▼ 표 8-9 printf류 함수의 서식 지정자. float 인수는 double로 변환된 후 처리된다.
문자 |
타입 |
변환 |
"hh" |
char 타입 |
정수 |
"h" |
short 타입 |
정수 |
"" |
signed, unsigned |
정수 |
"l" |
long 정수 타입 |
정수 |
"ll" |
long long 정수 타입 |
정수 |
"j" |
intmax_t, uintmax_t |
정수 |
"z" |
size_t |
정수 |
"t" |
ptrdiff_t |
정수 |
"L" |
long double |
부동 소수점 |
▼ 표 8-10 printf류 함수에 대한 서식 플래그
문자 |
의미 |
변환 |
"#" |
대체 서식(예 0x 접두어) |
"aAeEfFgGoxX" |
"0" |
0 패딩 |
숫자 |
"-" |
왼쪽 조정(left adjustment) |
모든 타입 |
" " |
양의 값은 ' ', 음의 값은 '-' |
부호 있는 타입 |
"+" |
양의 값은 '+', 음의 값은 '-' |
부호 있는 타입 |