【发布时间】:2011-04-01 13:57:51
【问题描述】:
KdPrint((
"Unknown IoControlCode %#x\n",
io_stack->Parameters.DeviceIoControl.IoControlCode
));
这很奇怪。锐是什么意思?
【问题讨论】:
标签: c format-string
KdPrint((
"Unknown IoControlCode %#x\n",
io_stack->Parameters.DeviceIoControl.IoControlCode
));
这很奇怪。锐是什么意思?
【问题讨论】:
标签: c format-string
# 表示an alternative format。对于x,这意味着0x 被添加到输出之前。
【讨论】:
printf 与说明符 x 一起使用时,# 会导致输出以 0x 为前缀,前提是要打印的值是 @ 987654325@。
【讨论】:
printf 文档说:
字符 % 后跟零个或多个以下标志:
# 该值应转换为“替代形式”。 对于 o 转换,第一个字符 的输出字符串为零(由 如果不为零,则为 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。
【讨论】: