關於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\n", val, &val, add);
    printf("val, &val, add的值分別為:%p 、%p、%X\n", val, &val, add);
    return 0;
}
#endif

 運行結果

  以上程序運行結果如下圖所示:

 

  仔細觀察以上對比結果,其中最重要的是Val的值,若以%d格式輸出為10;以%p格式輸出為0000 000A 。相信有一點基礎的人都可以很輕松的明白其中端倪。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM