Weet jy oor% # x, in C taal formaat string
-
30-09-2019 - |
Vra
KdPrint((
"Unknown IoControlCode %#x\n",
io_stack->Parameters.DeviceIoControl.IoControlCode
));
Dit is vreemd. Wat beteken skerp gemiddelde?
Oplossing
Die printf dokumentasie sê:
Die karakter%, gevolg deur nul of meer van die volgende vlae:
# Die waarde moet omgeskakel word na 'n ' 'n alternatiewe vorm' '. Vir o doelskoppe, die eerste karakter van die uitset string gemaak nul (deur voorvoegsel n 0 indien dit was nie nul reeds). Vir x en X doelskoppe, 'n nie-nul gevolg het die string '0x' (of '0X' vir X doelskoppe) prepended om Dit. Vir 'n, 'n, e, E, F, F, G, en G doelskoppe, die resultaat sal altyd bevat 'n desimale punt, selfs al is geen syfers volg dit (gewoonlik, 'n desimale punt verskyn in die resultate van dié doelskoppe slegs indien 'n syfer volg). Vir g en G doelskoppe, sleep nulle is nie verwyder van die resultaat as hulle anders sou wees. vir ander doelskoppe, is die gevolg ongedefinieer.
MSDN dokumente op die vlae is .
so vir %#x
die waarde is eenvoudig voorafgegaan met 0x
. Waar %x
34ab
sou oplewer, sou %#x
0x34ab
oplewer.
Ander wenke
#
indcates 'n alternatiewe formaat . Vir x
Dit beteken dat 0x
is prepended om die uitset.
printf wanneer dit gebruik word met specific x
, #
veroorsaak dat die uitset na word voorafgegaan deur 0x
op voorwaarde dat die waarde gedruk is behalwe 0
.