其實總結(jié)可能就是幾句話
源對象是有符號數(shù)的轉(zhuǎn)換
少字節(jié)數(shù)轉(zhuǎn)成多字節(jié)數(shù)(如char->(unsigned) short等)
- 不管轉(zhuǎn)換成的是有符號還是無符號數(shù),統(tǒng)統(tǒng)都是往高位填充源有符號數(shù)的符號位。
多字節(jié)數(shù)轉(zhuǎn)成少字節(jié)數(shù)(如short->(unsigned) char等)
- 不管轉(zhuǎn)換成的是有符號還是無符號數(shù),統(tǒng)統(tǒng)去掉高位,只保留目標對象的字節(jié)數(shù)
源對象是無符號數(shù)的轉(zhuǎn)換
少字節(jié)數(shù)轉(zhuǎn)成多字節(jié)數(shù)(如char->(unsigned) short等)
- 不管轉(zhuǎn)換成的是有符號還是無符號數(shù),統(tǒng)統(tǒng)都是往高位填充0。
多字節(jié)數(shù)轉(zhuǎn)成少字節(jié)數(shù)(如short->(unsigned) char等)
- 不管轉(zhuǎn)換成的是有符號還是無符號數(shù),統(tǒng)統(tǒng)去掉高位,只保留目標對象的字節(jié)數(shù)
貼上簡易代碼
#include <iostream>
using namespace std;
int main()
{
//符號位1,有符號數(shù)多字節(jié)轉(zhuǎn)無符號少字節(jié)
//結(jié)果:去掉高位,只保留無符號的字節(jié)數(shù)
short s_short = 0x8199;
cout<<hex<<s_short<<endl;
cout<<s_short<<endl;
char s_char = s_short;
cout<<hex<<s_char<<endl;
unsigned char u_char = s_short;
cout<<hex<<u_char<<endl;
//符號位1,有符號數(shù)多字節(jié)轉(zhuǎn)無符號少字節(jié)
//符號位1,有符號數(shù)少字節(jié)轉(zhuǎn)無符號多字節(jié)
char s_char1 = 0x99;
cout<<hex<<(int)s_char1<<endl;
unsigned short s_short1 = s_char1;
cout<<hex<<s_short1<<endl;
//符號位1,有符號數(shù)少字節(jié)轉(zhuǎn)無符號多字節(jié)
//無符號轉(zhuǎn)有符號,小轉(zhuǎn)大,高位補充0
unsigned char uchar2 = 0x99;
cout<<"(int)uchar2: "<<(int)uchar2<<endl;
cout<<"(unsigned int)uchar2: "<<(unsigned int)uchar2<<endl;
//無符號轉(zhuǎn)有符號,小轉(zhuǎn)大,高位補充0
//大轉(zhuǎn)小
unsigned short u_short2 = 0x9999;
cout<<"(unsigned char)u_short2: "<<(unsigned char)u_short2<<endl;
cout<<"(char)u_short2: "<<(char)u_short2<<endl;
}
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。