c語言若int型別佔兩個位元組,則以下語句輸出為

時間 2021-06-17 08:06:53

1樓:匿名使用者

u%是無符號數,即只有正的。-1的原碼取為反碼是65535。2個位元組是16位,取值範圍是0到65535。

2樓:藏天地

應該是printf("%d,%u\n",k,k);

選dk你應該賦值了-1,以%d格式自然輸出是-1;

關鍵是%u以無符號整型資料輸出,-1在記憶體中是以補碼的形式存放的,佔兩個位元組,-1的補碼為11.。。。11(16個1)以無符號形式輸出自然就是65535了

3樓:匿名使用者

d16位二進位制格式為 11111111 11111111

按有符號數解釋(%d),為負1

按無符號數解釋(%u),為65535

4樓:十指跳舞的男人

d.-1,65535

5樓:匿名使用者

k都沒有初始化值,是一個隨機數吧

6樓:

貌似有錯吧,k沒有初始化,應該為%u答案排除法應該是選b.-1,65536!

設c語言中,一個int型資料再記憶體中佔兩個位元組,則unsigned int 型資料的取值範圍為??

7樓:匿名使用者

如果一個int佔兩個位元組就是16位

unsigned int 範圍是 00000000 00000000 到 11111111 11111111

因此是0到65535

8樓:冰夢雪痕

int佔2個位元組,就是16位,則int型的變數值的範圍為-2^15 ~ (2^15 - 1), 即-32768~32767

unsigned int取值範圍0~(2^16 - 1), 即0~65535

9樓:匿名使用者

int 再內bai

存佔多少位元組和編譯du器有關,一般情況是zhi4位元組而不dao是2位元組,檢視方式sizeof(int),

unsigned int取值專

範圍是屬0到2^32,若int位2位元組則範圍是unsigned int取值範圍是0到2^16,原因 :unsigned int是無符號的,最高位是資料位,共16bit,故0到2^16

10樓:匿名使用者

0~65535。

也就是0x 00 00到0x ff ff。

後者就是ff ff = 65535。

無符號整型的區別在於它的最高位不是符號位。

c語言中:unsigned int a=-2;printf("%u",a);輸出結果為多少?

11樓:

在16位int平臺下,輸出是65534;在32位int平臺下,輸出是4294967294。以32位int平臺為例,題中的unsigned int a=-2;語句在unsigned的修飾下,賦給變數a的是-2補碼的無符號值,即4294967294。但後面的printf("%u",a);的輸出並不與a是否為有符號數沒有關係,輸出是否為有符號數由"%u"中的控制符%u決定,這裡%u表示將變數a按無符號數輸出,所以輸出是4294967294。

因此,如果將unsigned int a=-2;改為int a=-2;,printf("%u",a);同樣輸出4294967294。即使是unsigned int a=4294967294;這樣定義a,用printf("%d",a);輸出就是-2;因為輸出是由控制符%d決定的。

12樓:頹廢前進

輸出結果為65534或者4294967294

因為在不同位的作業系統下,數值的表示位數是不一樣的。首先我們先明確一點:在計算機中,正數用原碼來計算(正數的原碼、補碼、反碼都是一樣的);負數是用補碼來計算的。

至於原因可以參考一下文章網頁連結就是把減法簡化為加法從而大大簡化計算機電路的過程。

首先在16位系統中,-2的原碼為1000 0000 0000 0010;補碼為:1111 1111 1111 1110;我們使用的unsigned為無符號數,那麼此時計算機會把我們的-2強制轉化為正數進行運算,即用1111 1111 1111 1110表示-2,即為65534.

在32位作業系統中,-2的原碼為:1000 0000 0000 0000 0000 0000 0000 0010;補碼為:1111 1111 1111 1111 1111 1111 1111 1110;同上述,計算機會強制輸出1111 1111 1111 1111 1111 1111 1111 1110所代表的十進位制數,即4294967294。

#include

#include

void main()

輸出結果:

65535   65535

-2   4294967294

13樓:

應該是4294967295-2+1=4294967294

因為unsigned int a=-2;這句會強制把負數,轉換成正數

14樓:匿名使用者

在vc等32位編譯系統上-2的補碼是11111111111111111111111111111110

若解釋為unsigned int則為4294967294

同理unsigned int a=-2;printf("%d",a);雖然定義a是unsigned型別,但printf();函式中解釋為int型別,輸出結果還是-2。記憶體中的2進位制資料不同的解釋方式,有不同的顯示結果。

15樓:

unsigned int 為 0--655351111 1111 1111 1111 為 65535-2用補碼錶示

1000 0000 0000 0010 取反加11111 1111 1111 1110

結果為 65534

16樓:匿名使用者

看你的機器是多少位的,32位的和64位的結果是不同的

下面程式有兩個printf 語句,如果第一個printf語句輸出的是194,則第二個printf語句的輸出結果是 1a6 } 10

17樓:麥子

據本人推bai測本程式用du 十六進位制

輸出p和p+9的所指向數zhi據的地址。

dao而

版tc環境中int型別長度為2位元組

權。當p為194(十進位制為404)時,

p+9=404+2*9=422,換算後

十六進位制為1a6 。

論證完畢...

以上回答你滿意麼?

c語言如何理解“c將字元常量視為int型別而非char型別”這句話

每一個字元常量都對應一個ascii碼值,事實上c在記憶體中儲存的也是數值。每個字元常量在ascii碼錶中都能找到它對應的十進位制和十六進位制值,所以給字元變數賦值既可以用字元,也可以用數字。 金色潛鳥 char grade 8 這是宣告 grade 是 char 型變數,它的允許數值範圍 是 1位元...

c語言結構型別,C語言結構型別

這個是允許預設的,一般情況下是不能省略的。你給的 中在定義結構體型別時候同時定義了結構體變數lnode,這樣就用不到結構體類名。但是,如果你沒有在定義結構體時定義結構體變數,那麼你沒有結構體名,之後怎麼去定義結構體變數呢?typedef struct nodelnode node是一個結構體的名稱,...

cin在C語言裡是什麼意思,C語言中int與cin的區別是什麼

叫那個不知道 cin是c 程式語言中的標準輸入流物件,即istream類的物件。cin主要用於從標準輸入讀取資料,這裡的標準輸入,指的是終端的鍵盤。此外,cout是流的物件,即ostream類的物件,cerr是標準錯誤輸出流的物件,也是ostream 類的物件。這裡的標準輸出指的是終端鍵盤,標準錯誤...