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


    概述

      说白了,(%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
    ", val, &val, add);
        printf("val, &val, add的值分别为:%p 、%p、%X
    ", val, &val, add);
        return 0;
    }
    #endif

     运行结果

      以上程序运行结果如下图所示:

     

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

  • 相关阅读:
    python的进程与线程
    推荐一个GOLANG入门很好的网址
    为什么Python 3.6以后字典有序并且效率更高?
    git实用指南
    常用正则总结
    简单小结密码学入门知识点
    什么是k8s
    win10下apache superset的使用
    Maven工作记录
    JDK下载地址和安装
  • 原文地址:https://www.cnblogs.com/lixuejian/p/10797039.html
Copyright © 2020-2023  润新知