Sabe usted de% # x, en la cadena de formato de lenguaje C
-
30-09-2019 - |
Pregunta
KdPrint((
"Unknown IoControlCode %#x\n",
io_stack->Parameters.DeviceIoControl.IoControlCode
));
Es raro. ¿Qué significa aguda?
Solución
La documentación printf dice:
El carácter% es seguido por cero o más de los siguientes indicadores:
# El valor debe ser convertido en un ‘‘forma alternativa’’. Para la o las conversiones, el primer carácter de la cadena de salida se hace cero (por anteponiendo un 0 si no fuera cero ya). Para X y X conversiones, una resultado distinto de cero tiene la cadena ‘0x’ (o ‘0X’ para las conversiones X) antepuesto eso. Para a, A, E, E, F, F, G, y G conversiones, el resultado será siempre contener un punto decimal, incluso si no hay dígitos lo siguen (normalmente, un decimal aparece puntuales en los resultados de esas conversiones sólo si un dígito que sigue). Para G y G conversiones, arrastrando ceros no se eliminan del resultado ya que de otro modo serían. Por otro conversiones, el resultado es indefinido.
documentos de MSDN sobre las banderas son aquí .
Así que para %#x
el valor es simplemente el prefijo 0x
. Donde %x
cedería 34ab
, %#x
cedería 0x34ab
.
Otros consejos
# indcates href="http://en.wikipedia.org/wiki/Printf#printf_format_placeholders" rel="nofollow noreferrer"> un formato alternativa. Para x
Esto significa que 0x
se antepone a la salida.
printf cuando se utiliza con x
especificador, #
hace que la salida tener el prefijo 0x
siempre que el valor que se está imprimiendo es que no sea 0
.