在c語言中p,d和x的區別p是以16進位制的

2021-03-03 22:26:36 字數 6175 閱讀 3539

1樓:糖糖又笑了

%p用來輸出指標

%x用來輸入int 型別。

二者都是16進位制值輸出

如果版是32位系統 那麼沒區別

如果是64位系統 那麼 %p會輸出8位元組權資料。 而%x只能輸出4位元組資料。

也就是說

32位系統 %p等效於%x

64位系統 %p等效於%lx

在c語言中 %p ,%d和%x 的區別%p 是以16進位制的形式輸

2樓:匿名使用者

%p用來輸出指標

%x用來輸入int 型別。

二者都是16進位制值輸出

如果是32位系統 那麼沒區別

如果是64位系統 那麼 %p會輸出8位元組資料。 而%x只能輸出4位元組資料。

也就是說

32位系統 %p等效於%x

64位系統 %p等效於%lx

在c語言中 %p ,%d和%x 的區別

3樓:匿名使用者

%x不要前導0,也就說前面的0會被自動去掉也可以用%08x列印出來跟%p一樣的

實際上是一樣的,不過%p是專用來處理指標的吧,而%x對列印的資料都可以,感覺差不多,就是用%p的時候列印出來都是8個資料的

計算機儲存的都是2進位制,當然也可以用%d列印地址,列印指標,指標就是用來存放地址的

地址需要符號麼-_-#

%u當然很大了,因為%d表示負數的時候(2進位制)第1位是1,舉個例子:

用8個2進位制位表示-1為11111111轉成無符號型就是2的9次方減1了

在c語言中 %p ,%d和%x 的區別是什麼?

4樓:娜lucky哈哈

%p 是以16進位制的形式輸出記憶體地址。

%x 也是以16進位制的形式輸出記憶體地址。

不過%p的輸出字元為8個前2個為00。

%x只有6個。

%d 可以輸出整數。

也可以以10進位制的形式輸出。

%d 是有符號。

%x 是無符號。

舉個例子:

用8個2進位制位表示-1為11111111轉成無符號型就是2的9次方減1了。

%p是專用來處理指標的吧,而%x對列印的資料都可以,感覺差不多,就是用%p的時候列印出來都是8個資料的。

計算機儲存的都是2進位制,當然也可以用%d列印地址,列印指標,指標就是用來存放地址的

%u當然很大了,因為%d表示負數的時候(2進位制)第1位是1。

5樓:匿名使用者

% p不要前導0,也就說前面的0會被自動去掉也可以用%08x列印出來跟%p一樣的實際上是一樣的,不過%p是專用來處理指標的吧,而%x對列印的資料都可以,感覺差不多,就是用%p的時候列印出來都是8個資料的計算機儲存的都是2進位制,當然也可以用%d列印地址,列印指標,指標就是用來存放地址的地址需要符號麼-_-#%u當然很大了,因為%d表示負數的時候(2進位制)第1位是1,舉個例子:用8個2進位制位表示-1為11111111轉成無符號型就是2的9次方減1了

c語言中的%p和%x的區別

6樓:匿名使用者

1、輸出

的型別不同:

%p用來輸出指標的值、輸出地址符。指標,是一個無符號整數(unsigned int),它是一個以當前系統定址範圍為取值範圍的整數。而%x, %x 輸出無符號以十六進位制表示的整數。

2、輸出的結果會有不同:

32位系統下定址能力(地址空間)是4g bytes(0~2^32-1)二進位制表示長度為32bits(也就是4bytes), unsigned int型別也正好如此取值,%p用來輸出地址符時,結果是32位的。p 對應於指標型別,返回的值是指標的地址,以十六進位制的形式來表示。

例如:format("this is %p",p); 返回的是:this is 0012f548

7樓:

格式控制符「%p」中的p是pointer(指標)的縮寫。指標的值是語言實現(編譯程式)相關的,但幾乎所有實現中,指標的值都是一個表示地址空間中某個儲存器單元的整數。printf函式族中對於%p一般以十六進位制整數方式輸出指標的值,附加字首0x。

示例:int i = 1;

printf("%p",&i);

相當於int i = 1;

printf("0x%x",&i);

對於32位的指標,輸出一般會是類似0xf0001234之類的結果。

8樓:匿名使用者

16位和32位機 沒區別

64位機 %p輸出8位元組 最多16位16進位制數%x輸出按int 實際4位元組,最多8位16進位制數也就是說 如果輸出地址 用%x在64位機器上會出錯。

9樓:找你惹你

%p為16進位制數, 長度由當前作業系統決定, 32位系統長度就為32bit, 64位系統長度為64bit

%x為16進位制數, 長度為32bit

c語言中%p是什麼意思?

10樓:人設不能崩無限

格式控制符「%p」中的p是pointer(指標)的縮寫。指標的值是語言實現(編譯程式)相關的,但幾乎所有實現中,指標的值都是一個表示地址空間中某個儲存器單元的整數。printf函式族中對於%p一般以十六進位制整數方式輸出指標的值,附加字首0x。

%p是列印地址的, %x是以十六進位制形式列印, 完全不同!另外在64位下結果會不一樣, 所以列印指標老老實實用%p 。

11樓:匿名使用者

c語言中%p用來輸出指標型別自身的值。

也就是說 %p用來輸出地址。

一、使用方法:

%p一般僅用於printf及同類函式中。形式為printf("%p", varp);

其中後續引數varp為某一個指標變數。如

int a,*p;

p=&a;

printf("%p %p", p, &a);

這裡輸出的p和&a都是int*型。

二、功能:

%p格式符會輸出指標本身的值,也就是指標指向的地址值。

該輸出為16進位制形式,具體輸出值取決於指標指向的實際地址值。

三、與%x區別:

%x同樣輸出16進位制形式,不過%x對應的是int型,也就是說,其輸出長度與系統int型佔的位元組數相等。如32位編譯器,int型佔4位位元組,那麼%x輸出的結果最多為16個16進位制字元。

而%p輸出寬度取決於系統地址匯流排位數,即16位最多輸出4位16進位制字元,32位最多輸出8位16進位制字元,64位最多輸出16位16進位制字元。

所以用%p輸出地址,相對於用%x輸出,可以有更好的移植型和適應性,不會因為更換平臺而引起錯誤。

12樓:手機使用者

以16進位制輸出指標記憶體儲的地址

%hd: 輸出short型別變數

c語言裡面 %d是十進位制 %o是八進位制 %x是十六進位制 %多少是二進位制

13樓:小澈

c語言中沒有表示二進位制的字元,但是你可以根據十進位制、八進位制或者十六進位制轉換一下。

可以利用短除法,將十進位制轉變成二進位制,我們一般的思路是這樣的,下面給出一個例子:

把20轉換成二進位制:

20/2=10........餘數為0   最低位

10/2=5..........餘數為0

5/2=2............餘數為1

2/2=1............餘數為0

1/2=0............餘數為1      最高位

則20換成二進位制後是10100

利用短除法可以輕鬆地將十進位制轉換成二進位制,在程式設計中是這樣用的,以下給出**:

擴充套件資料:

在做資料讀寫傳輸時最常用也最直觀的莫過於十進位制數,但是在不同應用場合、儲存的方便在c語言開發時候也常採用二進位制、八進位制和十六進位制儲存資料。

進位制是一種計數機制,對於任何一種進位制,如:xx進位制,就表示某一位置上的數運算時逢 xx 進一位。例如:

時間60′60′,分鐘就會加 1,這就是六十進位制。計算機中常用的進位制有二進位制、八進位制、十進位制、十六進位制。

下面給出一個使用c語言程式設計實現任意進位制數(2-16進位制)轉換為其他任意進位制數(2-16進位制)的小程式**:

#include

#include

#include

int tennum(char a,int b);              //將輸入的數字轉換成10進位制數

void numchange(int m, int b);            //將轉換好了的10進位制數轉換為所需進位制數

int tennum(char a, int b)

return sum;

}void numchange(int m, int b)

}int main()

while (b < 2 && b > 16);

printf("請輸入待轉換數:");

getchar();

gets_s(a);                        //將輸入的n進位制數存放在陣列a中

int m = tennum(a, b);             //將輸入的數字轉換成十進位制數

printf("請輸入需要轉成幾進位制數(2-16):");

do while (b < 2 && b > 16);

printf("%d進位制數%s轉換為%d進位制數的結果為:",b,a,b);

numchange(m, b);                 //將十進位制數轉換為所需進位制數

printf("\n");

system("pause");

return 0;}

14樓:匿名使用者

c語言裡面沒有直接打出二進位制數的格式符。

c語言中對於不同型別的資料用不同的格式字元。控制printf函式輸出格式的是格式字元,printf函式中輸出的格式為printf("《格式化字串》", 《參量表》),格式化字串由格式控制、和輸出表列兩部分組成,其中格式控制包含格式宣告和普通字元。

格式宣告由「%」和格式字元組成,如%d、%f等。它的作用是將輸出的資料型別轉換為指定的格式然後輸出。普通字元是需要在輸出時原樣輸出的字元。

擴充套件資料:

printf函式格式字元:

常用的有以下幾種格式字元:

1. d格式字元。用來輸出十進位制整數。有以下幾種用法:

(1)%d,按整型資料的實際長度輸出。

(2)%md,m為指定的輸出欄位的寬度。

(3)%ld,輸出長整型資料。

2. o格式符,以八進位制整型式輸出整數。

3. x格式符,以十六進位制數形式輸出整數。

4. u格式符,用來輸出unsigned型資料,即無符號數,以十進位制形式輸出。

5. c格式符,用來輸出一個字元。

6. s格式符,用來輸出一個字串。

7. f格式符,用來輸出實數(包括單雙精度),以小數形式輸出。

8. e格式符,以指數形式輸出實數。

9. g格式符,用來輸出實數,它根據數值的大小,自動選f格式或e格式(選擇輸出是佔寬度較小的一種),且不輸出無意義的零。

10. p格式符,用於變數地址的輸出。

15樓:匿名使用者

c語言中沒有格式說明符對應二進位制形式的輸出和輸入,如果想以二進位制形式輸出某個數,可以使用自定義函式來實現。

示例:#include

void _printbinary(int a)//遞迴列印正二進位制形式數

void printbinary(int a)//以二進位制形式列印所有int型數

if (a < 0)

_printbinary(a);

}int main()

附:其他轉換說明符

%a(%a) 浮點數、十六進位制數字和p-(p-)記數法(c99)%c 字元

%d 有符號十進位制整數

%f 浮點數(包括float和doulbe)%e(%e) 浮點數指數輸出[e-(e-)記數法]%g(%g) 浮點數不顯無意義的零"0"

%i 有符號十進位制整數(與%d相同)

%u 無符號十進位制整數

%o 八進位制整數 e.g. 0123

%x(%x) 十六進位制整數0f(0f) e.g. 0x1234%p 指標

%s 字串

%% "%"

c語言中aa和a的區別,C語言中d和f還有c有什麼區別

a 是 單個字元,a 是 字串就是多個字元的集合實際上,a 等價於 a 0 末尾還有字串結束符 c語言中 d和 f還有 c有什麼區別 c,後邊的引數當字元處理 d,後邊的引數當整數處理 f,後邊的引數當浮點數處理。d是int型資料的萬用字元 f是float型資料的萬用字元 c是char型資料的萬用字...

C語言中p的運算過程。求解,c語言中,p1的計算優先順序

也是等效於bai p a k 你寫成這樣 執行,會發現du結果相同 p 並不是zhi先自dao加 再取值。對於後內建自加,括號容的用途只是和誰結合,而不說運算順序 不管有沒有括號,後置自加,都是先取值 再自加。也就是賦值 p之後 再自加。只能說是有 號 c語言中,p 1的計算優先順序 這是複合賦值表...

C中,x 2 為什麼錯,C語言中X 和 X有什麼區別?

具體是什麼 要實現什麼功能 因為這不是一個數式呀!因為2是一個編譯時常量 不能作為左值 程式執行時不會分配記憶體,它儲存不了 運算的結果。還是你沒有看好題目,計算出現錯誤了。因為在c中 的優先順序高於 除法運算,所以先執行2 但2又是常量,不分配記憶體區域,不能進行自增運算。所以不對 你好 現在回答...