亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

c語言中unsigned char的意義何在

c語言中unsigned char的意義何在

C
牛魔王的故事 2018-08-10 17:12:55
C語言中字符變量代表一個ASCII字符,ASCII碼的范圍在0-127即便是無符號,也是0-255,然而128-255之間代表什么字符呢?既然無法代表字符,那么unsigned char又有什么意義呢?求解,謝謝諸位
查看完整描述

3 回答

?
DIEA

TA貢獻1820條經驗 獲得超2個贊

首先要糾正一個錯誤觀念,char或者unsigned char本身和ASCII從來就沒有什么對應關系。char就是一個單字節有符號整數,unsigned char就是一個單字節無符號整數。這和shortunsigned short以及long longunsigned 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,以我個人的經驗,只有在使用類似putcharputsprintf時,才會將任何以整數形式表示的數字轉換成ASCII(或其他)編碼對應的字符,輸出在標準輸出中。例如:

    long long a = 0x38;    printf("%c\n", a);

這樣的代碼片段也是合法的,且出輸出一個8。

另外,ASCII也是有多種擴展的,在使用擴展ASCII時,以個人的經驗,charunsigned char并無明顯區別。如:

    char m = 0xa5;    unsigned char n = 0xa5;    printf("%c\n", m);    printf("%c\n", n);

都將輸出字符。


查看完整回答
反對 回復 2018-08-12
?
不負相思意

TA貢獻1777條經驗 獲得超10個贊

首先ascii的范圍顯然不在0-127 小寫a已經是 0x97 了 <- 顯然記錯了

查看完整回答
反對 回復 2018-08-12
  • onemoo
    onemoo
    小寫字母 a 的 ASCII 值是十進制 97,0x61
  • 3 回答
  • 0 關注
  • 5065 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號