回覆列表
-
1 # 愛大海的聲音
-
2 # 微笑的水歲月薄荷微
那是由於計算機的儲存模式造成的。
在計算機中,數字的儲存形式是二進位制。
整形數是一個八位二進位制數。
如:
xxxxxxxx
最大是:11111111
八個一
如果是無符號數,那麼第一位就應該不是符號位,所以8個1的值是:
255
如果是有符號,那麼第一位將是符號位。0表示正,1表示負,
如:01111111表示數字大小的只有了7位就是127.
11111111表示大小的也只有7位,是-127.
說白了就是是否正負數無符號的不能表示正負而已
字元型轉換成整型基本沒什麼問題,但反過來就可能會出問題了。因為在C語言中,整型一般是兩個位元組(int型兩個,long型4個,short int型一個),字元型為一個位元組(無符號的為兩個),一個位元組轉兩個沒問題,兩個轉一個就可能出現溢位問題。比如 char a=255,就會溢位,因為a表達的範圍只是-128~127