printf里的格式控制符

文章详细阐述了C语言中格式化输出指令%p和%x在处理指针和整型数值时的不同,特别是它们在不同位宽系统下的表现。%p用于输出指针地址,其宽度取决于系统的地址总线位数,而%x输出的是int型的16进制表示,宽度与int类型字节数相同。使用%p在跨平台时具有更好的移植性和适应性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

%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”的意思_i.czy的博客-CSDN博客

 关于printf("%p",p);使用方法的一些总结_c语言%p_Dandelion_drq的博客-CSDN博客

 C语言”%p”的意思_i.czy的博客-CSDN博客

C语言中%d,%s,%x,%f,%.100f,%的意思 - 知乎

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值