Est-ce que vous connaissez% # x, dans la chaîne de format langage C
-
30-09-2019 - |
Question
KdPrint((
"Unknown IoControlCode %#x\n",
io_stack->Parameters.DeviceIoControl.IoControlCode
));
Il est bizarre. Que signifie forte?
La solution
La documentation printf dit:
Le caractère% est suivi par zéro ou plusieurs des drapeaux suivants:
# La valeur doit être convertie en un « « autre forme » ». Pour o conversions, le premier caractère de la chaîne de sortie est constitué de zéro (par préfixer un 0 si ce n'était pas nul déjà). Pour les conversions x et X, un résultat non nul a la chaîne « 0x » (ou « 0X » pour les conversions X) préfixé il. Pour un, A, E, E, F, F, G et G conversions, le résultat sera toujours contenir un point décimal, même si aucun chiffres le suivent (normalement, une décimale Point apparaît dans les résultats de ces conversions que si un chiffre suit). Pour g et G, de fuite zéros ne sont pas supprimés du résultat comme ils le seraient autrement. Pour les autres conversions, le résultat est indéfini.
documentation MSDN sur les drapeaux sont ici .
pour %#x
la valeur est tout simplement préfixé avec 0x
. Où %x
produirait 34ab
, %#x
donnerait 0x34ab
.
Autres conseils
# indcates href="http://en.wikipedia.org/wiki/Printf#printf_format_placeholders" rel="nofollow noreferrer"> un autre format . Pour x
cela signifie que 0x
est préfixé à la sortie.
printf lorsqu'il est utilisé avec spécificateur x
, #
provoque la sortie de être préfixé avec 0x
à condition que la valeur est en cours d'impression autre que 0
.