c語言中以16進位制輸出時0和有什麼區別

2021-03-06 05:53:50 字數 5359 閱讀 5512

1樓:

%0x和%x都是以十六進位制格式右對齊輸出,輸出的是無符號數。

在不指定佔寬情況下以資料的實際寬度輸出,而系統又自動消除左端的無效0,所以%0x和%x在顯示效果上沒有什麼不同。

在指定佔寬的情況下,在指定的輸出佔寬範圍內,實際資料寬度不足時用%0x作控制的前面用0補齊,而用%x作控制的前面用空格補齊。如:

//#include "stdafx.h"//if the vc++6.0, with this line.

#include "stdio.h"

int main(void)

輸出是:

0037

37若實際資料寬度大於指定寬度,則按實際寬度輸出。

2樓:匿名使用者

標準c語言庫函式fprintf/printf格式字串的轉換說明形式是這樣的:

%[標誌][最小輸出寬度][.精度][長度修正符]型別方括號括起來是可選項。

標誌是0或多個標誌字元,可以是任意順序,常用有以下幾個:

- 左對齊,預設是右對齊。

+ 帶符號的值前面總是有個符號,也就是正數前面有+號,負數前面有-號。

0 輸出值的寬度小於最小寬度的話,用0填充,預設是用空格填充。

0是一個標誌字元,意思就是用0填充

3樓:匿名使用者

char x=5;

printf("%x\n",x);得到輸出5

printf("%0x\n",x);得到輸出05

4樓:巨大

你程式設計試試不就知道了嗎。

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

5樓:糖糖又笑了

%p用來輸出指標

%x用來輸入int 型別。

二者都是16進位制值輸出

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

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

也就是說

32位系統 %p等效於%x

64位系統 %p等效於%lx

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

6樓:匿名使用者

%p用來輸出指標

%x用來輸入int 型別。

二者都是16進位制值輸出

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

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

也就是說

32位系統 %p等效於%x

64位系統 %p等效於%lx

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

7樓:匿名使用者

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

8樓:

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

示例:int i = 1;

printf("%p",&i);

相當於int i = 1;

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

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

9樓:匿名使用者

16位和32位機 沒區別

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

10樓:找你惹你

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

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

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

11樓:娜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。

12樓:匿名使用者

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

c語言中以16進位制輸出時%0x和%x有什麼區別? 20

13樓:匿名使用者

%0x 如果你列印過記憶體地址時,是8位的16進位制數(win32),但是有時候希望不夠8位的時候顯示8位,則前面就會補0,補0是不影響大小的,或者在電子錶中,8點想要顯示位08的話,可以%2d,不夠兩位則補0,好理解

c語言中%x和%o是表示什麼?

14樓:哇哎西西

%x和%o都是用來輸入/輸出整型的格式化字元,可以用在c語言的格式化輸入輸出函式中。

用在scanf函式中,"%x,%o"表示%x對應的第一個變數接收一個十六進位制數,再接收一個逗號不賦給任何變數,最後接收一個八進位制數賦給%o對應的變數。字母大小寫均可。

用在printf函式中,"%x,%o"中的%o控制符是錯誤的,因為有的編譯器只認%o不認%o,就是說在printf中是分大小寫的。%x對應輸出大寫字母的十六進位制數,%x對應輸出小寫字母十六進位制數;中間逗號照搬輸出,%o對應輸出八進位制數。

擴充套件資料:

c語言中所有格式化型別的定義:

1、%d/i

接受整數值並將它表示為有符號的十進位制整數,i是老式寫法

2、%o

無符號8進位制整數(不輸出字首0)

3、%u

無符號10進位制整數

4、%x/x

無符號16進位制整數,x對應的是abcdef,x對應的是abcdef(不輸出字首0x)

5、%f(lf)

單精度浮點數和雙精度浮點數用f(lf在c99開始加入標準,意思和f相同)

15樓:夏天的太陽君

按照16進位制和8進位制輸出資料

16樓:芳志火

這種語言代表的是什麼?不太清楚,沒有這個方面的知識的。

17樓:鬼火狼煙

10,14 %x是16進位制顯示,%o是8進位制顯示

c語言中16進位制數0x10和0xa的區別是什麼?

18樓:匿名使用者

我門通常bai用的是十進位制du,也就是逢十進zhi1,也就是可以用0,1,2,3,4,5,6,7,8,9表示個位dao,當到十的時候就進內了一位,變成了兩位容10同理,八進位制是逢八進1,也就是可以用

0,1,2,3,4,5,6,7表示個位,當到八的時候變成了兩位10,我們在八進位制數10前面加上0,八進位制數10就變成了010了,010表示8,015表示1*8+5=13,那麼我門再看一個數046表示多少呢?表示4*8+6=42

同理,十六進位制是逢十六進1,也就是可以用

0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f表示個位,其中a,b,c,d,e,f分別表示十進位制中的10,11,12,13,14,15,在十六進位制小於十六的都是用一位來表示,當數等於16的時候就要進位了,變成了10,我們為了和十進位制區別,在10前面加0x10,表示這個數是用16進製表示的,那麼0x10由於是逢16進一,所以0x10表示的不是10,而是16,所以0x2a=2*16+a=2*16+10=42

c語言中以%x開頭的為十六進位制整數對嗎,怎麼理解

19樓:金色潛鳥

以 0x 或 0x 開頭的數 為十六進位制整數.

例如:int red= 0xff, green=0x80, blue=0xaa;

0xff, 0x80, 0xaa 都是 十六進位制整數。

%x -- 是 輸出/輸入語句裡的格式定義。

例如:int y;

scanf("%x",&y); // 以16進位制形式輸入 整型printf("%x %d",y,y); // %x -- 以16進位制形式輸出y, %d -- 再以10進位制形式輸出y。

輸入 若鍵盤 拍入 0x123 或 123 都可以,都表示 是 16進位制。

輸出:123 291

20樓:匿名使用者

%x是在printf或scanf(或是其衍生的fprintf或fscanf)用來做格式控制符的,表示以16進位制無符號數的形式顯示對應的表列裡的整數

21樓:匿名使用者

以0x或0x開頭的數是16進位制數,以0(數值0)開頭的是8進位制數。

%x是指在輸入/輸出資料時的格式,比如scanf("%x",&a);,以16進位制格式讀入資料(這裡不需要0x或0x開頭)。printf("%0x",a);,把整數a轉換為16進位制格式顯示在螢幕上。

22樓:小馬

對!確定

x 表示引數型別為int,輸出格式為十六進位制整數(不帶字首0x或0x)

printf("%x",n);

C語言2進位制轉16進位制

2進位制還是16進位制就是一個表示形式,存在記憶體中的變數是不用轉的,就是顯示出來給人看不一樣。你可以這樣轉 16進位制顯示 printf variable a x a 2進位制顯示 char int2bin const int in,char out tp 0 while out tp out 0...

用c語言,輸入十進位制數,輸出相應的二進位制32位原碼 補碼 反碼 移碼和IEEE754浮點數

include include void main if n 0 輸入一個數字,既要用原碼反碼.顯示,又用ieee754浮點數顯示?不像話。輸入一個十進位制數,用c語言輸出其原碼補碼反碼移碼 十進位制數可以為正負數整數小數 25 include include void main if n 0 設計...

在c語言中0和n都是什麼意思,在C語言中 0 和 n 都是什麼意思?

轉義字元。1 0其實就是0,字串存入字元陣列的時候最後一個字元作為字串的結尾回。告訴計算機,答 這個字串結束了。2 n是回車換行,挺長用的。比如 printf d n a 就會輸出a的值以後,自動換行。putchar n 輸出一個回車。其它的你可以瞭解一下 t,相當於一個很大的空格。根據你的補充提問...