0
点赞
收藏
分享

微信扫一扫

数据存储,整形提升类问题

weipeng2k 2022-04-19 阅读 73
c语言

int main()
{
    unsigned char a = 200;
    //00000000000000000000000011001000(原反补相同)
    //11001000(char型-8bit)
    unsigned char b = 100;
    //00000000000000000000000001100100(原反补相同)
    //01100100(char型-8bit)
    unsigned char c = 0;
    c = a + b;
    //a和b都是char型,比int型短,需要发生整型提升,整型提升需要考虑补0(正数时)或补1(负数时)
    //a无符号整型,所以补0,结果为
    //00000000000000000000000011001000 --a
    //00000000000000000000000001100100 --b
    //00000000000000000000000100101100 --c,(2进制时),变为%d为300
    // 但是因为c为char型,所以只能8位,需要截断
    //00101100----unsigned char c时,,,变为%d为44
    printf("%d %d\n", a + b, c);//打印结果为300  44
    return 0;
}

举报

相关推荐

0 条评论