首先,說下結論,這裡由於各種平台的規定不同,對char的預設型別可能不同(unsigned和signed), 所以也有人認為結果不能確定。這裡主要要說的是pc上常見的把char預設為signed char的情況,如vs中,執行一遍你會發現結果是-128.
但是8位的signed char型,除去符號位1位,如何表示-128,這裡計算機把它拓展成16位,最後再截斷取後8位。
-128 原碼 1000 0000 1000 0000
-128 反碼 1111 1111 0111 1111
-128 補碼 1111 1111 1000 0000
從這裡可以看出-128的補碼,擷取8位後為1000 0000,正好是127+1;
同理,可以驗證,把-129賦給signed char
-129 原碼 1000 0000 1000 0001
-129 反碼 1111 1111 0111 1110
-129 補碼 1111 1111 0111 1111
擷取8位後為0100 0000,所以在程式中列印出來應為127。
C 中的char型變數
最簡單的字元資料型別是 char 資料型別。該型別的變數只能容納乙個字元,而且在大多數系統上,只使用乙個位元組的記憶體。以下示例即宣告了乙個名為 letter 的 char 變數。請注意,這裡的字元常數就是賦給變數的值,要用單引號括起來。char letter a 下面的程式使用了乙個 char 變...
關於int型和char型之間的轉換
我們將乙個整型變數賦值給乙個char型變數的話,就是將相應的ascii碼值的字元送入s變數 ascii碼 48 代表 0 ascii 1 代表笑臉 ascii碼 0 代表 0 於是char s 1 我們得到的將是笑臉 char s 48 我們得到 0 char s 0 我們得到 0 當我們需要得到乙...
string和char型陣列的區別
char ch1 give me char ch2 a cup strcpy ch1,ch2 cout ch1 輸出結果 ch1 a cup string str1 give me string str2 a cup str1 str2 cout str1 0,5 引數2為起始位置,引數3為字元數 ...