你知道吗C#language format string中的%#x

时间:2010-08-20 09:50:03

标签: c format-string

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

这很奇怪。什么是敏锐的意思?

3 个答案:

答案 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