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

有点奇怪。尖锐是什么意思?

4

3 回答 3

4

#指示另一种格式。因为x这意味着0x在输出之前。

于 2010-08-20T09:51:55.920 回答
4

printf 文档说:

字符 % 后跟零个或多个以下标志:

# 该值应转换为“替代形式”。对于 o 转换,输出字符串的第一个字符为零(如果它还不是零,则添加前缀 0)。对于 x 和 X 转换,非零结果的前面带有字符串 '0x'(或 X 转换的 '0X')。对于 a、A、e、E、f、F、g 和 G 转换,结果将始终包含一个小数点,即使它后面没有数字(通常,只有当 a后跟数字)。对于 g 和 G 转换,不会从结果中删除尾随零,否则它们会被删除。对于其他转换,结果未定义。

有关标志的 MSDN 文档在这里

所以对于%#x值只是简单地以 . 为前缀0x。哪里%x会屈服34ab%#x会屈服0x34ab

于 2010-08-20T09:54:34.853 回答
3

printf与说明符一起使用时,x如果要打印的值不是.#0x 0

于 2010-08-20T09:53:36.433 回答