其實總結(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)系作者