크기 사양
서식 사양에서 네 번째 필드는 변환 지정자에 대한 인수 길이 한정자입니다. type 필드에 대한 size 필드 접두사 h, l, w, I, I32, I64 및 ll는 수정되는 변환 지정자에 따라 긴 인수 또는 짧은 인수, 32비트 또는 64비트, 단일 바이트 문자 또는 와이드 문자로 해당 인수의 "크기"를 지정합니다. 아래 표에 표시된 것처럼 이러한 크기 접두사는 printf 및 wprintf 함수에 type 문자와 함께 사용되어 인수 길이 해석을 지정합니다. 일부 인수 형식의 경우 size 필드는 선택 사항입니다. 크기 접두사가 지정되지 않으면 포맷터가 정수 인수(예: 부호 있는 또는 부호 없는 char, short, int, long 및 열거형 형식)를 32비트 int 형식으로 사용하고 부동 소수점 인수를 64비트 double 형식으로 사용합니다. 가변 인수 목록의 기본 인수 승격 규칙과 일치합니다. 인수 승격에 대한 자세한 내용은 줄임표 및 기본 인수를 참조하세요. 32비트 및 64비트 시스템 모두에서 ll 또는 I64 크기 접두사가 64비트 정수 인수의 서식 사양에 포함되어야 합니다. 그렇지 않으면 포맷터 동작이 정의되지 않습니다.
일부 형식은 32비트 및 64비트 코드에서 크기가 다릅니다. 예를 들어 size_t는 x86용으로 컴파일된 코드에서는 32비트 길이이며 x64용으로 컴파일된 코드에서는 64비트입니다. 가변 너비 형식에 대해 플랫폼 제약 없는 서식 코드를 만들려면 가변 너비 인수 길이 한정자를 사용할 수 있습니다. 또는 64비트 인수 길이 한정자를 사용하여 명시적으로 가변 너비 인수 형식을 64비트로 승격합니다. Microsoft 전용 I 인수 길이 한정자가 가변 너비 정수 인수를 처리합니다.
참고
I, I32, 및 I64 길이 한정자 접두사는 Microsoft 확장이며 ANSI와 호환되지 않습니다.char 형식의 데이터와 함께 사용되는 h 접두사, wchar_t 형식의 데이터와 함께 사용되는 w 접두사, double 형식의 데이터와 함께 사용되는 l 접두사는 Microsoft 확장입니다.hh, j, z 및 t 길이 접두사는 지원되지 않습니다.
Printf 및 wprintf 서식 형식 지정자에 대한 크기 접두사
지정할 함수 |
접두사 사용 |
형식 지정자 사용 |
---|---|---|
long int |
l (소문자 L) |
d, i, o, x 또는 X |
long unsigned int |
l |
o, u, x 또는 X |
long long |
ll |
d, i, o, x 또는 X |
short int |
h |
d, i, o, x 또는 X |
short unsigned int |
h |
o, u, x 또는 X |
__int32 |
I32 |
d, i, o, x 또는 X |
unsigned __int32 |
I32 |
o, u, x 또는 X |
__int64 |
I64 |
d, i, o, x 또는 X |
unsigned __int64 |
I64 |
o, u, x 또는 X |
ptrdiff_t(즉, 32비트 플랫폼에서 __int32, 64비트 플랫폼에서 __int64) |
I |
d, i, o, x 또는 X |
size_t(즉, 32비트 플랫폼에서 unsigned __int32, 64비트 플랫폼에서 unsigned __int64) |
I |
o, u, x 또는 X |
long double(Visual C++에서는 long double이 고유한 형식이나 내부 표현이 double과 동일합니다.) |
l 또는 L |
a, A, e, E, f, g 또는 G |
printf 및 wprintf 함수가 사용되는 단일 바이트 문자입니다. hc 또는 hC 형식 지정자는 printf 함수의 c 및 wprintf 함수의 C와 같습니다. |
h |
c 또는 C |
printf 및 wprintf 함수가 사용되는 와이드 문자입니다. lc, lC, wc 또는 wC 형식 지정자는 printf 함수의 C 및 wprintf 함수의 c와 같습니다. |
l 또는 w |
c 또는 C |
printf 및 wprintf 함수가 사용되는 단일 바이트 문자열입니다. hs 또는 hS 형식 지정자는 printf 함수의 s 및 wprintf 함수의 S와 같습니다. |
h |
s, S 또는 Z |
printf 및 wprintf 함수가 사용되는 와이드 문자열입니다. ls, lS, ws 또는 wS 형식 지정자는 printf 함수의 S 및 wprintf 함수의 s와 같습니다. |
l 또는 w |
s, S 또는 Z |