这两个函数调用是等价的吗?(假设变量x的类型为unsigned int)
x
unsigned int
printf ("%#x\n", x); printf ("0x%x\n", x);
和以下两个函数调用:
printf ("%#.8x\n", x); printf ("0x%08x\n", x);
为什么有些嵌入式程序更喜欢后者而不是前者?
pw136qt21#
来自C标准7.9.16.1第6段,在fprintf中的#上:结果被转换为“替代形式”...对于x(或X)转换,非零结果的前缀为0x(或0X)。所以你有它:%#x将0x作为任何非零结果的前缀。所以它与0x%x相同,除了结果为零时。
fprintf
#
%#x
0x
0x%x
1条答案
按热度按时间pw136qt21#
来自C标准7.9.16.1第6段,在
fprintf
中的#
上:结果被转换为“替代形式”...对于x(或X)转换,非零结果的前缀为0x(或0X)。
所以你有它:
%#x
将0x
作为任何非零结果的前缀。所以它与0x%x
相同,除了结果为零时。