C語言中字符變量代表一個ASCII字符,ASCII碼的范圍在0-127即便是無符號,也是0-255,然而128-255之間代表什么字符呢?既然無法代表字符,那么unsigned char又有什么意義呢?求解,謝謝諸位
3 回答

DIEA
TA貢獻1820條經驗 獲得超2個贊
首先要糾正一個錯誤觀念,char
或者unsigned char
本身和ASCII從來就沒有什么對應關系。char
就是一個單字節有符號整數,unsigned char
就是一個單字節無符號整數。這和short
, unsigned short
以及long long
, unsigned long long
之間的關系是類似的。
而unsigned char
存在的必要性,個人覺得下面這個例子可以從一個側面來表現:
char m = 0xa5; unsigned char n = 0xa5; printf("0x%02hhx\n", m >> 1); printf("0x%02hhx\n", n >> 1);
這個片段的運行結果將是
0xd20x52
而至于ASCII,以我個人的經驗,只有在使用類似putchar
, puts
, printf
時,才會將任何
以整數形式表示的數字轉換成ASCII(或其他)編碼對應的字符,輸出在標準輸出中。例如:
long long a = 0x38; printf("%c\n", a);
這樣的代碼片段也是合法的,且出輸出一個8
。
另外,ASCII也是有多種擴展的,在使用擴展ASCII時,以個人的經驗,char
和unsigned char
并無明顯區別。如:
char m = 0xa5; unsigned char n = 0xa5; printf("%c\n", m); printf("%c\n", n);
都將輸出¥
字符。
- 3 回答
- 0 關注
- 5065 瀏覽
添加回答
舉報
0/150
提交
取消