首页 > 编程语言 > 详细

关于C语言中%p和%X的思考

时间:2019-04-30 17:47:25      阅读:284      评论:0      收藏:0      [点我收藏+]
  • 说白了,(%A)仅仅代表以何种格式显示所要显示的数据,具体何种格式如下:
%d 有符号10进制整数 
%i 有符号10进制整数 
%o 无符号8进制整数 
%u 无符号10进制整数 
%x 无符号的16进制数字,并以小写abcdef表示
%X 无符号的16进制数字,并以大写ABCDEF表示
%F/f 浮点数 
%E/e 用科学表示格式的浮点数 
%g 使用%f和%e表示中的总的位数表示最短的来表示浮点数 G 同g格式,但表示为指数 
%c 单个字符 
%s 字符串
  • 所以%p是将所要显示的数据以地址指针格式输出,即如果是32位,以4字节十六进制格式输出,如果是64位,以8字节十六进制格式输出。而%X仅仅是将要显示的数据以十六进制格式输出,所以当地址做高位为0是会不显示,若想要显示显示为4字节,可以将格式设置为%08X。

以下为验证实例:

#include<stdio.h>

//test
#if 1
int main()
{
    int val = 10;
    int* add = &val;
    printf("val, &val, add的值分别为:%d 、%d、%d\n", val, &val, add);
    printf("val, &val, add的值分别为:%p 、%08X、%X\n", val, &val, add);
    return 0;
}
#endif

 

运行结果如下:

技术分享图片 

仔细观察以上对比结果,其中最重要的是Val的值,若以%d格式输出为10;以%p格式输出为0000 000A 。相信有一点基础的人都可以很轻松的明白其中端倪。

 

关于C语言中%p和%X的思考

原文:https://www.cnblogs.com/lixuejian/p/10797039.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!