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

2021-06-17 08:06:57 字數 3277 閱讀 3175

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 。

論證完畢...

以上回答你滿意麼?

long佔幾個位元組,c語言int佔幾個位元組?

一個字母佔用一個位元組,一個漢字是兩個位元組。所以long佔4個位元組。如果你說的是c語言中的long長整型變數,是佔4個位元組32位 兩種情況都是4個位元組。回答8gb 8000,000,000 10 位元組,一般的硬碟生產廠商採用1,000,000,000 10 位元組 1gb。蘋果公司的os ...

在中,漢字佔兩個位元組,字元的概念可以指半個漢字嗎

不對,在word中沒這種說話得,只能說一個字母佔一個漢字的半個字元,一個漢字佔兩個位元組這是對的,並不能用漢字的一半來說。你好!一個英文字母佔用1個位元組,而一個漢字佔用2個位元組的空間,如有疑問,請追問。位元組 字元的區別,一個漢字是佔兩個位元組還是兩個字元?漢字在gbk gb2312編碼是2個位...

在c語言中怎麼比較兩個字母的ascll碼大鋅隨便寫

int main else char 按照 d輸出就是ascii碼 按照 c就是字元 所以可以直接比大小 字元本身並沒有編碼的區別 字元本身的定義就是一個八位元組的資料,而ascii碼是一種編碼規則。也可以說是一種編碼表,對照表 如一個字元中的數值為41,那麼從ascii表中,我們找出其對應的值,就...