KdPrint((
"Unknown IoControlCode %#x\n",
io_stack->Parameters.DeviceIoControl.IoControlCode
));
这很奇怪。什么是敏锐的意思?
答案 0 :(得分:4)
printf文档说:
字符%后跟零个或多个以下标志:
#该值应转换为“替代形式”。 对于o转换,第一个字符 输出字符串的值为零(by 如果它不为零,则前缀为0 已经)。对于x和X转换,a 非零结果 有前缀的字符串'0x'(或X转换为'0X') 它。对于a,A,e,E,f,F,g和G. 转换,结果将永远 包含小数点,即使没有 数字跟随它(通常是小数 点出现 在这些转换的结果中,只有数字跟随)。 对于g和G转换,尾随 不会从结果中删除零 因为他们会这样。对于其他 转换,结果未定义。
标志上的MSDN文档为here。
因此对于%#x
,该值只是以0x
为前缀。如果%x
会产生34ab
,%#x
会产生0x34ab
。
答案 1 :(得分:3)
#
指示an alternative format。对于x
,这意味着0x
会被添加到输出中。
答案 2 :(得分:3)
printf与说明符x
一起使用时,#
会使输出前缀为0x
,前提是打印的值为 而不是< / em> 0
。