%p:打印地址(指针地址),十六进制形式输出,有多少位输出多少位,取决于是32 or 64位系统,如果输出不够位宽,左边补0。
%f用来输出实数,以小数形式输出,默认情况下保留小数点6位。
%.100f用来输出实数,保留小数点100位。
%e以指数形式输出实数,
%g根据大小自动选f格式或e格式,且不输出无意义的零。
另外%p与 %x区别:
1、%p格式符会输出指针本身的值,也就是指针指向的地址值。该输出为16进制形式,具体输出值取决于指针指向的实际地址值。
2、%x同样输出16进制形式,不过%x对应的是int型,也就是说,其输出长度与系统int型占的字节数相等回。如32位编译器,int型占4位字节,那么%x输出的结果最多为8个16进制字符。而%p输出宽度取决于系统地址总线位数,即16位最多输出4位16进制字符,32位最多输出8位16进制字符,64位最多输出16位16进制字符。
3、用%p输出地址,相对于用%x输出,可以有更好的移植型和适应性,不会因为更换平台而引起错误。
参考:
文章详细阐述了C语言中格式化输出指令%p和%x在处理指针和整型数值时的不同,特别是它们在不同位宽系统下的表现。%p用于输出指针地址,其宽度取决于系统的地址总线位数,而%x输出的是int型的16进制表示,宽度与int类型字节数相同。使用%p在跨平台时具有更好的移植性和适应性。

1487

被折叠的 条评论
为什么被折叠?



