c語言小問題,為什麼結果是 1,謝謝

2022-02-16 06:50:22 字數 622 閱讀 7378

1樓:帽子狗

ffff是的2進位制數是1111 1111 1111 1111它的反碼為1000 0000 0000 0000 符號位不變補碼就是1000 0000 0000 0001一共16個1 佔4個位元組

x為char型 資料溢位 只能儲存8個二進位制數(符號位和後面7位) 就是1000 0001

符號位為1 就是-1

2樓:匿名使用者

0xffff的二進位制是1111 1111 1111 1111char只有1個位元組,即8位,那麼賦給x將被截斷,得到1111 1111.

這個在計算機裡面是-1的補碼錶示,原碼就是 這個補碼的反碼(1000 0000 )+1

,最高位是符號位,表示負的。結果就是1000 0001,就是-1.

%d就是輸出整數的。那麼就是-1啦

3樓:一隻程式設計貓

看不懂追問

4樓:以它石攻玉

首先,x是字元型,賦值是有給的是字串,

你試試改成x=0,是不是也是-1

c語言,為什麼結果是13c語言,為什麼結果是

答案我執行過了,是 1 3 4 5,現在我來解釋一下,希望我的解釋你能夠理解 首先int a 5 1 注意到c c 語言規定是a 0 1,a 1 4,a 2 5 而不是a 1 1,a 2 4,a 3 5 2 經過 while i n k a i i 由於a i 即a 1 4,而k 3不大於a 1 不...

c語言 下列程式執行後的輸出結果是1為什麼

36 輸出 1 x 0xffff 如果用十六進位制表示的話,數前面要加0x以表示是十六進位制。ffff用二進位制表示就是16個1,1111111111111111,轉換成十進位制就是2 16 1,即65535。因為int型資料範圍是 32767 32768,二進位制在計算機中表示時,第一位是符號位 ...

c語言中和的區別,為什麼 3的執行結果是3 4的結果是 7 15的結果是 15的運算有什規律

是邏輯運算,例如 if x 3 y 3 是位運算,算這個要先把數字轉換成2進位制3 3 0011 0011 0011 3 計算方式是,相應的位上,只要有一個數是1,則結果為13 4 0011 0100 0111 7 3 15 0011 1111 1111 15 表示按位或,把要按位或運算的兩個數字按...