C语言 “%#x”是否等同于printf家族函数的格式字符串中的“0x%x”?

jhkqcmku  于 2023-05-16  发布在  其他
关注(0)|答案(1)|浏览(168)

这两个函数调用是等价的吗?(假设变量x的类型为unsigned int

printf ("%#x\n", x);
printf ("0x%x\n", x);

和以下两个函数调用:

printf ("%#.8x\n", x);
printf ("0x%08x\n", x);

为什么有些嵌入式程序更喜欢后者而不是前者?

pw136qt2

pw136qt21#

来自C标准7.9.16.1第6段,在fprintf中的#上:
结果被转换为“替代形式”...对于x(或X)转换,非零结果的前缀为0x(或0X)。
所以你有它:%#x0x作为任何非零结果的前缀。所以它与0x%x相同,除了结果为零时。

相关问题