Udostępnij za pośrednictwem


Specyfikacja rozmiaru

W specyfikacji formatu czwarte pole jest modyfikatorem długości argumentu dla specyfikatora konwersji.size prefiksy pola do type pola —h, l, w, I, I32, I64, i ll— określ "rozmiar" odpowiedni argument — długi lub krótki, 32-bitowy lub 64-bitowy, znaków jednobajtowych lub znaków dwubajtowych — w zależności od specyfikatora konwersji, który modyfikuje.Te prefiksy rozmiarów są używane ze type znakami printf i wprintf rodzin i funkcji do określenia interpretacji długości argumentu, jak pokazano w poniższej tabeli.size pole jest opcjonalne w przypadku niektórych typów argumentów.Jeśli nie określono żadnego prefiksu rozmiaru, program formatujący wykorzystuje argumenty liczba całkowita — na przykład podpisane lub niepodpisane char, short, int, long, i typów wyliczenia — jako 32-bitowa int typów i argumenty zmiennoprzecinkowe są używane jako 64-bitowa double typów.Domyślne reguły promocji argument list zmiennej argument jest zgodna.Aby uzyskać więcej informacji na temat argumentu promocji zobacz Wielokropki i argumenty domyślne.W przypadku systemów zarówno 32-bitowych i 64-bitowych specyfikacji formatu z argumentem 64-bitowa wartość całkowita musi zawierać prefiksem rozmiar ll lub I64.W przeciwnym razie zachowanie program formatujący jest niezdefiniowana.

Niektóre typy są różne rozmiary w kodzie 32-bitowych i 64-bitowych.Na przykład size_t 32 bitów długo w kodzie skompilowanym dla procesorów x 86 i 64 bity w kodzie skompilowanym dla procesorów x 64.Aby utworzyć niezależne od platformy formatowania kodu dla typów zmiennej szerokości, można użyć modyfikator długość argumentu zmiennej szerokości.Możesz również zastosować modyfikator długość argumentu 64-bitowych i jawnie podwyższyć typ argumentu o zmiennej szerokości do 64 bity.Specyficzne dla firmy Microsoft I argument modyfikator długość obsługi argumentów całkowitą zmiennej szerokości.

[!UWAGA]

I, I32, i I64 długość modyfikatora prefiksów to rozszerzenia Microsoft i nie są zgodne z ANSI.h prefiksu, gdy jest używany z danymi typem char, w prefiksu, gdy jest używany z danymi typami wchar_ti l prefiksu, gdy jest używany z danymi typami double są rozszerzenia Microsoft.hh, j , z, i t długości prefiksów nie są obsługiwane.

Rozmiar prefiksów dla printf i wprintf specyfikatorów typ formatu

Aby określić

Użyj prefiksu

Ze specyfikatorem typu

long int

l (mała litera L)

d, i, o, x lub X

long unsigned int

l

o, u, x lub X

long long

ll

d, i, o, x lub X

short int

h

d, i, o, x lub X

short unsigned int

h

o, u, x lub X

__int32

I32

d, i, o, x lub X

unsigned __int32

I32

o, u, x lub X

__int64

I64

d, i, o, x lub X

unsigned __int64

I64

o, u, x lub X

ptrdiff_t (to znaczy, __int32 na platformach 32-bitowych, __int64 na platformach 64-bitowych)

I

d, i, o, x lub X

size_t (to znaczy, unsigned __int32 na platformach 32-bitowych, unsigned __int64 na platformach 64-bitowych)

I

o, u, x lub X

long double (W Visual C++, chociaż long double jest typ samodzielnym, ma taką samą reprezentację wewnętrzną jak double.)

l lub L

a, A, e, E, f, g lub G

Ciąg znaków jednobajtowych z printf i wprintf funkcji.(Specyfikator typu hc lub hC jest równoznaczny z c w funkcjach printf oraz z C w funkcjach wprintf.)

h

c lub C

Szeroki znak printf i wprintf funkcji.(Specyfikator typu lc, lC, wc lub wC jest równoznaczny z C w funkcjach printf oraz z c w funkcjach wprintf.)

l lub w

c lub C

Ciąg znaków jednobajtowych printf i wprintf funkcji.(Specyfikator typu hs lub hS jest równoznaczny z s w funkcjach printf oraz z S w funkcjach wprintf.)

h

s, S lub Z

Ciąg szerokich znaków z printf i wprintf funkcji.(Specyfikator typu ls, lS, ws lub wS jest równoznaczny z S w funkcjach printf oraz z s w funkcjach wprintf.)

l lub w

s, S lub Z

Zobacz też

Informacje

printf, _printf_l, wprintf, _wprintf_l

Składnia specyfikacji formatu: funkcje printf i wprintf

Dyrektywy flagowania

printf — Specyfikacje szerokości

Specyfikacja dokładności

printf — Znaki pola typu