C++中有符号数与无符号数相互转换关系,多字节数与少字节数相互转换关系

其实总结可能就是几句话

源对象是有符号数的转换

少字节数转成多字节数(如char->(unsigned) short等)

  • 不管转换成的是有符号还是无符号数,统统都是往高位填充源有符号数的符号位。

多字节数转成少字节数(如short->(unsigned) char等)

  • 不管转换成的是有符号还是无符号数,统统去掉高位,只保留目标对象的字节数

源对象是无符号数的转换

少字节数转成多字节数(如char->(unsigned) short等)

  • 不管转换成的是有符号还是无符号数,统统都是往高位填充0。

多字节数转成少字节数(如short->(unsigned) char等)

  • 不管转换成的是有符号还是无符号数,统统去掉高位,只保留目标对象的字节数
    贴上简易代码
#include 
using namespace std;

int main()
{
    //符号位1,有符号数多字节转无符号少字节
    //结果:去掉高位,只保留无符号的字节数
    short s_short = 0x8199;
    cout<

你可能感兴趣的:(C++中有符号数与无符号数相互转换关系,多字节数与少字节数相互转换关系)