zoukankan      html  css  js  c++  java
  • 关于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 。相信有一点基础的人都可以很轻松的明白其中端倪。

  • 相关阅读:
    (转)ReentrantLock与Synchronized同步区别
    (转)Java NIO框架
    (转)Apache Mina网络框架
    (转)java中Executor、ExecutorService、ThreadPoolExecutor介绍
    路由选择协议
    SYN攻击
    网络基础
    [翻译]在Django项目中添加谷歌统计(Google Analytics)
    初识Python-web框架的这两天
    June本地环境搭建
  • 原文地址:https://www.cnblogs.com/lixuejian/p/10797039.html
Copyright © 2011-2022 走看看