Specifiche di dimensione
In una specifica del formato, il quarto campo è un modificatore di lunghezza dell'argomento per l'identificatore di conversione. Il campo size viene usato come prefisso per il campo type. h, l, w, I, I32, I64 e ll specificano le "dimensioni" dell'argomento corrispondente, ovvero lungo o corto, a 32 bit o a 64 bit, carattere a byte singolo o carattere wide, in base all'identificatore di conversione che viene modificato. I prefissi relativi alle dimensioni vengono usati con i caratteri type nei gruppi di funzioni printf e wprintf per specificare l'implementazione delle lunghezze degli argomenti, come mostrato nella tabella seguente. Il campo size è facoltativo per alcuni tipi di argomento. Quando non viene specificato alcun prefisso, il formattatore utilizza argomenti di tipo Integer, ad esempio char, short firmati o non firmati, int, long e tipi di enumerazione, ad esempio i tipi int a 32 bit e gli argomenti a virgola mobile vengono utilizzati come tipi double a 64 bit. Corrisponde alle regole di promozione degli argomenti predefinite per elenchi di argomenti variabili. Per altre informazioni sulla promozione di argomenti, vedere Puntini di sospensione e argomenti predefiniti. Nei sistemi a 32 bit e 64 bit la specifica del formato di un argomento Integer a 64 bit deve includere un prefisso di dimensione pari a ll o I64. In caso contrario, il comportamento del formattatore non sarà definito.
Alcuni tipi corrispondono a dimensioni diverse le codice a 32 bit e a 64 bit. Ad esempio, size_t ha una lunghezza pari a 32 bit nel codice compilato per x86 e a 64 bit nel codice compilato per x64. Per creare codice di formattazione indipendente dalla piattaforma per tipi a larghezza variabile, è possibile usare un modificatore di lunghezza per argomenti a larghezza variabile. In alternativa, usare un modificatore di lunghezza di argomenti a 64 bit e alzare di livello esplicitamente il tipo di argomento a larghezza variabile a 64 bit. Il modificatore di lunghezza di argomenti I specifico Microsoft gestisce gli argomenti Integer a larghezza variabile.
Nota
I prefissi I, I32 e I64 del modificatore di lunghezza sono estensioni Microsoft, non compatibili con ANSI.Il prefisso h usato con dati di tipo char, il prefisso w usato con dati di tipo wchar_t e il prefisso l usato con dati di tipo double sono estensioni Microsoft.I prefissi di lunghezza hh, j, z e t non sono supportati.
Prefissi di dimensione per identificatori di tipo di formato printf e wprintf
Per specificare |
Prefisso da usare |
Con identificatore del tipo |
---|---|---|
long int |
l (L minuscola) |
d, i, o, x o X |
long unsigned int |
l |
o, u, x o X |
long long |
ll |
d, i, o, x o X |
short int |
h |
d, i, o, x o X |
short unsigned int |
h |
o, u, x o X |
__int32 |
I32 |
d, i, o, x o X |
unsigned __int32 |
I32 |
o, u, x o X |
__int64 |
I64 |
d, i, o, x o X |
unsigned __int64 |
I64 |
o, u, x o X |
ptrdiff_t (ovvero __int32 in piattaforme a 32 bit, __int64 in piattaforme a 64 bit) |
I |
d, i, o, x o X |
size_t (ovvero unsigned __int32 in piattaforme a 32 bit, unsigned __int64 in piattaforme a 64 bit) |
I |
o, u, x o X |
long double (In Visual C++, anche se long double è un tipo distinto, ha la stessa rappresentazione interna di double). |
l o L |
a, A, e, E, f, g o G |
Carattere a byte singolo con le funzioni printf e wprintf. (Un identificatore di tipo hc o hC è sinonimo di c nelle funzioni printf e di C nelle funzioni wprintf). |
h |
c o C |
Carattere wide con le funzioni printf e wprintf. (Un identificatore di tipo lc, lC, wc o wC è sinonimo di C nelle funzioni printf e di c nelle funzioni wprintf). |
l o w |
c o C |
Stringa con caratteri a byte singolo con le funzioni printf e wprintf. (Un identificatore di tipo hs o hS è sinonimo di s nelle funzioni printf e di S nelle funzioni wprintf). |
h |
s, S o Z |
Stringa con caratteri wide e le funzioni printf e wprintf. (Un identificatore di tipo ls, lS, ws o wS è sinonimo di S nelle funzioni printf e di s nelle funzioni wprintf). |
l o w |
s, S o Z |
Vedere anche
Riferimenti
printf, _printf_l, wprintf, _wprintf_l
Sintassi per la specifica del formato: funzioni printf wprintf