概述
說白了,(%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 。相信有一點基礎的人都可以很輕松的明白其中端倪。