c/c++语言开发共享为什么打印0(零)而没有使用C打印格式“%#x”的前导“0x”?

背景:我有许多脚本通过查找前导“0x”来解析查找hex数的日志文件。 我们的嵌入式C库改为新的printf。 新的printf比我们之前更符合标准,我的脚本破了。

在Linux机器上:

#include  int main( void ) { printf( "%#010xn", 0 ); printf( "%#010xn", 1 ); return 0; } 

输出(使用glibc)是:

 0000000000 0x00000001 

我们公司的输出是:

 0x00000000 0x00000001 

从printf(3)开始,在’#’标志字符上:“对于x和X转换,非零结果的前缀为字符串”0x“(或X转换为”0X“)。”

我很好奇为什么 。 如果没有挖掘C标准文件或为标准委员会成员购买午餐,为什么不在零价值论证中使用前导0x?

    标准似乎是这样编写的:

    现在,指定%#x工作的方式在隔离方面很有意义。 像%010x这样的工作方式可以%010x使用。 你正在组合这两个修饰符,最终的结果可能是奇怪的。 对于另一个应用程序,比如自动生成整齐的C代码来初始化表,有0,而不是0x0不是问题。

    但是没有必要将%#x%010x结合起来。 你可以写0x%08x来做你想要的。

    需要了解更多c/c++开发分享为什么打印0(零)而没有使用C打印格式“%#x”的前导“0x”?,也可以关注C/ C++技术分享栏目—计算机技术网(www.ctvol.com)!

      以上就是c/c++开发分享为什么打印0(零)而没有使用C打印格式“%#x”的前导“0x”?相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/c-cdevelopment/980031.html

      (0)
      上一篇 2021年12月13日
      下一篇 2021年12月13日

      精彩推荐