【问题标题】:Do you know about %#x, in C language format string你知道 %#x,C 语言格式的字符串吗
【发布时间】:2011-04-01 13:57:51
【问题描述】:
KdPrint((
         "Unknown IoControlCode %#x\n",
                io_stack->Parameters.DeviceIoControl.IoControlCode
        ));

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

【问题讨论】:

    标签: c format-string


    【解决方案1】:

    # 表示an alternative format。对于x,这意味着0x 被添加到输出之前。

    【讨论】:

      【解决方案2】:

      printf 与说明符 x 一起使用时,# 会导致输出以 0x 为前缀,前提是要打印的值是 @ 987654325@。

      【讨论】:

        【解决方案3】:

        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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2012-03-02
          • 1970-01-01
          • 1970-01-01
          • 2015-05-31
          • 2020-06-14
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多