無符號數和有符號數在程式設計裡的一些坑

2021-08-18 14:27:53 字數 968 閱讀 5979

這些都是擷取趙歡老師上課時候的ppt

第乙個第三個沒有解釋我談一下自己的觀點好了hh

第乙個我們unsigned i,單純的說,無符號數怎麼樣都是大於等於0的,所以說這是乙個死迴圈。

有的同學可能會說,無符號數小的減去乙個比自己大的數會怎麼樣呀?

其實無符號數和有符號數是一樣的,都是加上減數的補碼

0111減去0100(7減去4)

那麼其實就是0111加上1100

等於0011(進製1丟棄)

結果等於

0011(4)這是正確的。

第二個其實sizeof返回的是unsigned的資料,而且i-delta>=0這是個表示式,裡面有符號數i和無符號數delta,這時候符號數i會轉換成無符號數i,那麼實際上無符號數減去無符號數結果怎麼樣都是大於等於0的,所以說,還是乙個死迴圈。

這裡是同理的哈哈,sizeof返回兩個無符號數,然後for迴圈的判斷式是乙個表示式,所以說符號數i變成了無符號數,無符號數把-1(11111111 11111111 11111111 11111111 int在32位或者64位機器下是4位元組)無符號解釋的話就是4位元組最大值了。。。。。。2147483647肯定不可能小於5/1-1=3了。。。。。。所以會直接跳出程式。

有符號數和無符號數

有符號和無符號整數 1.通常情況下,大多數字預設的是有符號數,比如 4,5 要想寫乙個無符號數必須在後面加u 比如 4u,5u 2.在計算機中有符號數是用補碼的形式來表示的,最高位是符號位。無符號數就是正數唄 正數的補碼和原碼相同。比如 1 在計算機中表示為 11111111 11111111 11...

無符號數和有符號數

人有十個手指頭,習慣了逢十進一,於是十進位製成了生活中的標準。程式的世界只有高低電平兩種狀態,更適合用二進位制來表示,於是二進位製成了程式世界的標準。對與無符號數來說,我們更喜歡談他們之間的轉化,十進位制是我們最習慣的進製,於是十進位制轉為r進製,r進製轉為十進位制變尤為重要。十進位制 r進製 整數...

有符號數和無符號數

刷題刷到了有符號數的問題,回顧一下知識點 有符號數 signed 可以區分正負數 最高位表示數值的正負 0表示正數,1表示負數 無符號數 unsigned 不區分正負數 只有整數型別 雖然無符號數所能表示的最大數值大於有符號數,但兩者所能表示的數值範圍相同。eg.short int 128,0 0,...