Pregunta

KdPrint((
         "Unknown IoControlCode %#x\n",
                io_stack->Parameters.DeviceIoControl.IoControlCode
        ));

Es raro. ¿Qué significa aguda?

¿Fue útil?

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

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top