Condividi tramite


Caratteri di campo di tipo per printf

In una specifica di formato, il carattere type è un identificatore di conversione che specifica se l'argomento corrispondente deve essere interpretato come un carattere, una stringa, un puntatore, un intero o numero a virgola mobile. Il carattere type è l'unico campo di specifica di formato obbligatorio e viene visualizzato dopo tutti i campi facoltativi.

Gli argomenti che seguono la stringa di formato vengono interpretati a seconda del carattere corrispondente type e del prefisso facoltativo size. Le conversioni dei tipi di carattere char e wchar_t vengono specificate tramite l'utilizzo di c o C e le stringhe di caratteri estesi a byte singolo e multibyte vengono specificati utilizzando s o S, a seconda della funzione di formattazione utilizzata. Argomenti di tipo stringa e carattere che vengono specificati utilizzando c e s sono interpretati come char e char* dalla famiglia di funzioni printf, o come wchar_t e wchar_t* dalla famiglia di funzioni wprintf. Argomenti di tipo stringa e carattere che vengono specificati utilizzando C e S sono interpretati come wchar_t e wchar_t* dalla famiglia di funzioni printf, o come char e char* dalla famiglia di funzioni wprintf.

Tipi interi come short, int, long, long long e relative varianti unsigned, vengono specificati utilizzando d, i, o, u, x e X. I tipi a virgola mobile come float, double e long double, vengono specificati utilizzando a, A, e, E, f, g e G. Per impostazione predefinita, a meno che non vengano modificati da un prefisso di lunghezza del campo size, gli argomenti interi sono assegnati forzatamente al tipo int e gli argomenti a virgola mobile sono assegnati a double. Nei sistemi a 64 bit, int è un valore a 32 bit; pertanto, gli integer a 64 bit verranno troncati quando vengono formattati per l'output a meno che non venga utilizzato un prefisso di ridimensionamento size o ll oppure I64. Tipi di puntatore specificati tramite l'utilizzo di p utilizzano la lunghezza predefinita per la piattaforma.

Nota

I tipi di caratteri C, S e Z e il comportamento dei tipi di carattere s e di c quando vengono utilizzati con le funzioni wprintf e printf, sono estensioni Microsoft e non sono compatibili con lo standard ANSI.Visual C++ non supporta il tipo di carattere F.

Caratteri di campo di tipo per printf

Carattere tipo

Argomento

Formato di output

c

Carattere

Una volta utilizzato con printf, specifica un carattere a byte singolo; quando utilizzato con wprintf, specifica un carattere "wide".

C

Carattere

Una volta utilizzato con printf, specifica un carattere "wide"; quando utilizzato con wprintf, specifica un carattere a byte singolo.

d

Integer

Intero decimale con segno.

i

Integer

Intero deciamel con segno.

o

Integer

Intero ottale senza segno.

u

Integer

Unsigned Integer decimale.

x

Integer

Intero esadecimale senza segno; utilizza "abcdef".

X

Integer

Intero esadecimale senza segno; utilizza "ABCDEF".

e

A virgola mobile

Il valore con segno che presenta il formato [ – ]d.dddd e[segno]dd[d] dove d è una cifra decimale, dddd è una o più cifre decimali, è dd[d] è due o tre cifre decimali a seconda del formato di output e la dimensione dell'esponente e il segno è + o -.

E

A virgola mobile

Identico al formato e con la differenza che E invece di e introduce l'esponente.

f

A virgola mobile

Formatta un valore con segno che presenta il formato [ – ]dddd.dddd, dove dddd è costituito da una o più cifre decimali. Il numero di cifre prima del separatore decimale dipende dalla grandezza del numero, mentre il numero di cifre dopo il separatore decimale dipende dalla precisione richiesta.

g

A virgola mobile

I valori con segno vengono mostrati nel formato f o e, a seconda di quale sia più compatto per il valore e la precisione specificati. Il formato e viene utilizzato solo quando l'esponente del valore è minore di -4 o maggiore o uguale all'argomento precision. Gli zeri finali vengono troncati e il separatore decimale viene visualizzato solo se una o più cifre lo seguono.

G

A virgola mobile

Identico al formato g, con la differenza che E, invece di e, introduce l'esponente (quando necessario).

a

A virgola mobile

Il valore esadecimale con segno a virgola mobile a precisione doppia che presenta il formato [−]0xh.hhhh dd, dove h.hhhh sono le cifre esadecimali (utilizzando lettere minuscole) della mantissa e dd sono una o più cifre per l'esponente. La precisione indica il numero di cifre dopo il punto.

A

A virgola mobile

Il valore esadecimale con segno a virgola mobile a precisione doppia che presenta il formato [−]0Xh.hhhh dd, dove h.hhhh sono le cifre esadecimali (utilizzando lettere maiuscole) della mantissa e dd sono una o più cifre per l'esponente. La precisione indica il numero di cifre dopo il punto.

n

Puntatore ad intero

Numero di caratteri che viene scritto correttamente fino al flusso o nel buffer. Questo valore viene archiviato nel numero intero in cui l'indirizzo viene fornito come argomento. Vedere più avanti in questo articolo la nota sulla sicurezza.

p

Tipo di puntatore

Visualizza l'argomento come indirizzo nelle cifre esadecimali.

s

String

Una volta utilizzato con le funzioni printf, specifica una stringa di caratteri multibyte o a byte singolo; una volta utilizzato con le funzioni wprintf, specifica una stringa di caratteri "wide". I caratteri vengono visualizzati fino al primo carattere null o finchè il valore precision viene raggiunto.

S

String

Una volta utilizzato con le funzioni printf, specifica una stringa di caratteri "wide"; una volta utilizzato con le funzioni wprintf, specifica una stringa di caratteri multibyte o a byte singolo. I caratteri vengono visualizzati fino al primo carattere null o finchè il valore precision viene raggiunto.

Z

Struttura ANSI_STRING o UNICODE_STRING

Quando l'indirizzo di una struttura ANSI_STRING o UNICODE_STRING viene passato come argomento, visualizza la stringa contenuta nel buffer puntato dal campo Buffer della struttura. Utilizzare un prefisso di modificatori di lunghezza w per specificare un argomento UNICODE_STRING, ad esempio %wZ. Il campo Length della struttura deve essere impostato sulla lunghezza, in byte, della stringa. Il campo MaximumLength della struttura deve essere impostato sulla lunghezza, in byte, del buffer.

In genere, il carattere di tipo Z viene utilizzato solo nelle funzioni di debug del driver che utilizzano una specifica di formato, come dbgPrint e kdPrint.

Se l'argomento che corrisponde ad un identificatore di conversione a virgola mobile è infinito, non definito, o NAN, la seguente tabella elenca l'output formattato.

Valore

Output

+ infinito

1.#INFcifre casuali

- infinito

-1.#INFcifre casuali

Non definito (come un quiet NaN)

cifra.#INDcifre casuali

NaN

cifra.#NANcifre casuali

Nota

Se il campo Buffer dell'argomento corrispondente a %Z, o dell'argomento corrispondente a %s o a %S, è un puntatore null, verrà visualizzato "(null)".

Nota

In tutti i formati esponenziali, il numero di cifre predefinito dell'esponente da visualizzare è tre.Utilizzando la funzione _set_output_format, è possibile impostare il numero di cifre visualizzato a due, ma si espande a tre se viene richiesto dalle dimensioni dell'esponente.

Nota sulla sicurezzaNota sulla sicurezza

Poiché il formato %n è considerato non protetto, è disabilitato per impostazione predefinita.Se %n viene visualizzato in una stringa di formato, il gestore di parametro non valido viene richiamato, come descritto in Convalida dei parametri.Per abilitare il supporto a %n, vedere _set_printf_count_output.

Vedere anche

Riferimenti

printf, _printf_l, wprintf, _wprintf_l

Sintassi per la specifica del formato: funzioni printf wprintf

Direttive flag

Specifica della larghezza per printf

Specifica precisione

Specifiche di dimensione

_set_output_format