Sai riguardo% # x, in C stringa di formato lingua
-
30-09-2019 - |
Domanda
KdPrint((
"Unknown IoControlCode %#x\n",
io_stack->Parameters.DeviceIoControl.IoControlCode
));
E 'strano. Che cosa significa tagliente?
Soluzione
La documentazione printf dice:
Il carattere% è seguito da zero o più dei seguenti flag:
# Il valore deve essere convertito in un ‘‘forma alternativa’’. Per o conversioni, il primo carattere della stringa di uscita viene fatta zero (da anteponendo un 0 se non fosse nullo già). Per X e X conversioni, un risultato non nullo ha la stringa ‘0x’ (o ‘0X’ per le conversioni X) anteporre al esso. Per una, A, e, E, F, F, G e G conversioni, il risultato sarà sempre contenere un punto decimale, anche se nessuno cifre seguono (normalmente, un decimale appare point nei risultati di tali conversioni solo se una cifra segue). Per g e G conversioni trascinamento zeri non vengono rimossi dal risultato come sarebbero altrimenti. Per altro conversioni, il risultato è indefinito.
documentazione MSDN sulle bandiere sono .
Come %#x
il valore viene semplicemente prefisso 0x
. Dove %x
produrrebbe 34ab
, %#x
produrrebbe 0x34ab
.
Altri suggerimenti
# indcates href="http://en.wikipedia.org/wiki/Printf#printf_format_placeholders" rel="nofollow noreferrer"> un formato alternativo. Per x
Ciò significa che 0x
viene anteposto all'uscita.
printf quando utilizzato con specificatore x
, #
produce stampe essere preceduto 0x
disponibile il valore in fase di stampa è diverso 0
.