c語言賦值

2022-11-28 10:55:14 字數 1205 閱讀 3205

1樓:sshhff鳳

(負數在計算機中用補碼錶示)

執行int b=-1;時,此時b的賦值過程如下(二進位制表示):

0000 0000 0000 0001(正數的1)1111 1111 1111 1110(正數1取反)1111 1111 1111 1111 (正數1取反加1,得到-1)此時最高位的1表示符號。

但執行到a=b時,

a=1111 1111 1111 1111,由於此時a 是無符號數。

所以它的值是2的16次方減1,即65535,即二進位制數1111 1111 1111 1111

2樓:八噶笨狗

因為unsigned 是無符號型 儲存的資料範圍則是0~65535 沒有-1 所以 結果益處啦 改成int a 就好了

3樓:匿名使用者

也就是a=-1 因為負數在儲存中以補碼形式存在 規定a是無符號整形也就是回吧符號位的1當做2的16次而不是負號 因此得到的結果就是65535

4樓:魂大人的店鋪

unsignesd 是沒有符號的他的範圍是0-65525int 是有符號的 他的範圍-32768-32767他們都是都是佔4個位元組 一個位元組八位

00000000 000000000 00000000 00000000 二進位制32位

因為int的第一位是符號位() 所以他表示的數分正負但是範圍要比unsigned小

但是他們都是32位啊 —1的第一位一定是符號位 轉換成unsigned時他表示的就是不是符號位了 他表示數值了

還是不怎麼好說明白···

5樓:匿名使用者

%n格式不會有輸出,而是會將到目前為止輸出的字元數量儲存到對應的地址中(對應一個int *型別的值)。

-1的二進位制形式(按16位計算)是

1111 1111 1111 1111

而unsigned型別的65535的二進位制形式也是這樣的,所以會按unsigned型別解釋這個值。

6樓:匿名使用者

-1在記憶體中是十六進位制的0xffffffff當成無符號數就是2^32-1=65535

至於為什麼-1在記憶體中是十六進位制的0xffffffff『-』號就是「取反加一」

1是0x00000001

去反就成了0xfffffffe

加一就成了0xffffffff

C語言賦值語句,C語言中賦值語句有什麼規則要求?

選ab中取模右邊不是整數 c中賦值號左側不是一個變數 d中第二個賦值號左側不是一個變數 c語言中通過 運算子來實現賦值,有時候也用它來進行初始化,在c語言中初始化和賦值是完全兩個不同的概念。比如下面的 int a 10 這是初始化a 0 10 這是賦值 初始化是一個順序點,編譯器保證每一個順序點都執...

c語言如何給一堆陣列整體賦值,C語言如何給一堆陣列整體賦值

你只須給至少一個賦0值就行了。如 int a 1000 或int a 1000 因為如果有至少一個賦值的話,編譯器就會給那些沒有給定值的預設初始值。int a 全是0 我用gcc可以 int a 前面有人說tc不行,我不知道 如果要賦其他值我就知道用迴圈 用for迴圈把個個元素賦值,不過 c語言如何...

C語言中賦值運算子的含義,在C語言中11種賦值運算子的具體含義,用法?

a b的意思是a a b,a和b位運算相 與 後賦給a。類似的還有 a b,a b.a b,a b,a b,a b,a b,a b,a b,跟上面的意思一樣。你儘管放心我的答案吧,我是照著教科書寫的。只聽說過 沒聽說過 在c語言中11種賦值運算子的具體含義,用法?1.六個變數 表示式的賦值 是賦值運...