C中給無符號型別賦了個負值的後果

2021-03-03 21:38:28 字數 1347 閱讀 8056

1樓:小兆

在記憶體長度上沒有溢位的情況下,比如u和u2都是4個位元組,以及有符號整數也是4個位元組,這時候將原資料按照位模式逐位拷貝到目的變數。比如例子中的-32,在記憶體裡這個數的十六進位制表示為:0xffffffe0。

將這個十六進位制數逐位拷貝到一個無符號整數變數的記憶體空間後,列印出來就是你看到的結果。

2樓:匿名使用者

-1 在機器中的真實表示為0xffffffff因此你把它當成一個正數去看的話那麼就是2^32-1,也就是一個非常大的正整數

你明白了什麼麼?

其實對於機器而言,無所謂正負之分,僅僅在於你如何去看待這個資料

c語言中無符號整數變數賦負整數為什麼不報錯,而且列印這個數也是負數

3樓:

給一個無符抄號變數賦一個負數,就襲把這個「bai負數」的補碼當du

正數對待了(unsigend的級zhi別高於int)——這和dao給一個浮點變數賦一個整型數時被提升為浮點型一樣——這符合c/c++的自動型別轉換規則,所以不報錯。至輸出還是負數恐怕不對,除非你強制為int型輸出,否則輸出是無符號的。

4樓:玹龗

沒有圖你就在這吹牛b?

無符號應該是你自己的問題或者編譯器的問題,反正我這裡不能輸出你不放**討論沒什麼意義

最多告訴你-1用 1111 1111儲存無符號輸出就是255

c/c++中資料型別為什麼會有正數和負數範圍

5樓:

c/c++中所有的整數都用二進位制補碼錶示。

char型的正數範圍是1~127而不是0~255;unsigned char型的範圍才是0~255。

char型的範圍是-128~+127。

因為整數域客觀上存在負數、0和正數,所以c/c++的整數資料型別必須「適應」這種客觀需要;unsigned資料只是在實際問題不涉及負數時定義的所謂「無符號數」,用以擴充套件有限的二進位制位長表達更多的整數。

6樓:秋葉絲語

每種型別都分為: 有符號和無符號兩種

比如你所說的char型別,也分為:unsigned char 和signed char

char在大多數的編譯器中是認為是signed char。

unsigned char的取之範圍是:0-255 (8為都是資料)signed char的取之範圍是:-128 - 127 (最高位是符號位,剩下7位是資料)。

無論是有符號數還是無符號數在記憶體中都是以補嗎的方式儲存的。

7樓:匿名使用者

知道這個範圍就行,實際中用不用,要看實際的情況~~~

c 中何為無符號,何為有符號,C 中什麼叫有符號型別的無符號版本?

無符號型 是指該變數的值只能是正數,即 大於等於 0.有符號型 是指其值 可以是 整數,負數,0.一般來說,對於同一型別的 無符號 表示的最大值 是 有符號表示最大值的2倍。我也剛學c語言呢 先不要著急,c語言和c 這個有符號無符號都是一樣的.有符號和無符號簡單的說就是有符號的可以表示負數,而無符號...

c語言中怎麼給陣列賦隨機值,C語言中怎麼給陣列賦隨機值

看 include include include define n 9 void main for i 0 i 這裡注意一下rand 需要生成資料的範圍公式,即 範圍在 a,b 寫成 a i a rand b a 你只定義不賦值,像是int a 10 它裡面的數字就是隨機的,如果有規定範圍,就要像...

C中符號什麼意思,舉例子,C中符號什麼意思,舉一個例子

比如a b 他實際上是a a b的縮寫,意思和a a b是一樣的,相似的還有 等,很多都可以這麼用 在c 中,是一個複合運算子,意思是先算加法,再賦值。例如a b相當於a a b,即把a b的值再賦值給a a b 等同於a a b c 中 符號連用是什麼意思 引用是c 引入的新語言特性,是c 常用的...