Specifikace velikosti
Ve specifikaci formátu je čtvrté pole modifikátor délky argumentu pro specifikátor převodu.Předpony pole size pole type – h, l, w, I, I32, I64 a ll – určují „velikost“ odpovídajícího argumenty – long nebo short, 32bitový nebo 64bitový, jednobajtový znak nebo široký znak – podle specifikátoru převodu, který mění.Tyto předpony velikosti se používají se znaky type v rodinách funkcí printf a wprintf pro určení délek argumentů, jak je znázorněno v následující tabulce.Pole size je nepovinné pro některé typy argumentů.Pokud není zadána žádná předpona. velikost, formátování spotřebovává celočíselných argumentů – například podepsaná nebo nepodepsaná char, short, int, long, a výčet typů – jako 32bitový int typy a argumenty s plovoucí desetinnou čárkou se spotřebovávají jako 64-bit double typy.Shoduje se výchozí pravidla pro podporu argument pro proměnné argument seznamy.Další informace o podpoře argument, naleznete v části Výpustky a výchozí argumenty.Na 32bitové a 64bitové systémy, musí obsahovat specifikaci formátu 64bitové celé číslo argumentu velikost předponou ll nebo I64.V opačném chování formátovací modul není definováno.
V 32bitové a 64bitové verze kódu pro některé typy jsou různé velikosti.Můžete například size_t je 32 bitů dlouho v kódu zkompilované pro platformu x 86 a 64 bitů v kódu zkompilovaného pro platformu x 64.Chcete-li vytvořit kód pro formátování bez ohledu na platformu pro typy proměnné šířky, můžete použít modifikátor Délka proměnné šířky argument.Můžete také použít modifikátor délka argument 64bitové a explicitně podporovat typ argumentu proměnné šířky na 64 bitů.Microsoft specifické I argument délka modifikátor zpracovává proměnné šířky celočíselných argumentů.
[!POZNÁMKA]
Předpony modifikující délku I, I32 a I64 jsou rozšíření Microsoft a nejsou kompatibilní s normou ANSI.Předpona h při použití s daty typu char, předpona w při použití s daty typu wchar_ta předpona l při použití s daty typu double jsou rozšíření Microsoft.Délkové předpony hh, j, z a t nejsou podporovány.
Předpony velikosti pro printf a specifikátory formátu pro wprintf
Upřesnit |
Použít předponu |
Se specifikátorem typu |
---|---|---|
long int |
l (malé písmeno L) |
d, i, o, x nebo X |
long unsigned int |
l |
o, u, x, nebo X |
long long |
ll |
d, i, o, x nebo X |
short int |
h |
d, i, o, x nebo X |
short unsigned int |
h |
o, u, x, nebo X |
__int32 |
I32 |
d, i, o, x nebo X |
unsigned __int32 |
I32 |
o, u, x, nebo X |
__int64 |
I64 |
d, i, o, x nebo X |
unsigned __int64 |
I64 |
o, u, x, nebo X |
ptrdiff_t (tj. __int32 na 32bitových platformách, __int64 na 64bitových platformách) |
I |
d, i, o, x nebo X |
size_t (tj. unsigned __int32 na 32bitových platformách, unsigned __int64 na 64bitových platformách) |
I |
o, u, x, nebo X |
long double (V Visual C++, i když long double je odlišný typ, má stejnou vnitřní reprezentaci jako double.) |
l nebo L |
a, A, e, E, f, g nebo G |
Jednobajtový znak s funkcemi printf a wprintf.(Specifikátor typu hc nebo hC je synonymní s c ve funkcích printf a s C ve funkcích wprintf.) |
h |
c nebo C |
Široký znak s funkcemi printf a wprintf.(Specifikátor typu lc, lC, wc nebo wC je synonymní s C ve funkcích printf a s c ve funkcích wprintf.) |
l nebo w |
c nebo C |
Jednobajtové znakové řetězce s funkcemi printf a wprintf.(Specifikátor typu hs nebo hS je synonymní s s ve funkcích printf a s S ve funkcích wprintf.) |
h |
s, S, nebo Z |
Širokoznaký řetězec s funkcemi printf a wprintf.(Specifikátor typu ls, lS, ws nebo wS je synonymní s S ve funkcích printf a s s ve funkcích wprintf.) |
l nebo w |
s, S, nebo Z |
Viz také
Referenční dokumentace
printf, _printf_l, wprintf, _wprintf_l