有如下一段C語言程序:
#include "stdio.h"
int main(void)
{
char a = 0xC8;
printf ("字符a的ASCII碼值的10進制是%d\n", a);
return 0;
}
程序定義了一個字符‘a’,並且賦予了初始值“0xC8”,這是一個16進制的數。最後,通過printf函數輸出字符a的值。
程序不難,光看程序,也應該知道最終的結果。16進制“0xC8”的10進制數是200,所以程序應該輸出字符a的ASCII碼值是200吧。實際運行結果如下:
範圍,超過的部分是200 – 127 = 73。那麼超過的部分又從-128開始計數了,也就是-128 + 73 - 1 = -56了。
如果在定義字符a時,類型寫成“unsigned char”,那麼舊標明字符a的10進制ASCII碼值是無符號的,取值範圍就是【0,255】了。朋友們可以修改下程序看看結果是什麼。
下一篇來談談爲何“char”類型的取值範圍是【-128,127】,而“unsigned char”取值範圍是【0,255】。
歡迎留言討論技術。