整形提升-C语言

整型提升的原则:当一个小字节数,向大字节数转换时,有符号补0或1,无符号补0;

为什么会发生测试结果呢,让我们来看一下

在64位的环境中char是1个字节8位

char  a=1; 

1000 0001  原码                 整形提升    11111111        11111111    11111111   11111111  补

1111 1110  反码                                    10000000       00000000   0000000    0000000  反码

1111 1111  补码  请看右边                    10000000       00000000   0000000    0000001  原码

计算机中存的是补码(计算机识别):转换时要化为源码(人类识别)                 结果为-1;

unsigned char b=-1;

1000  0001 源码                   整形提升  00000000  00000000  00000000  11111111 补码

1111   1110 反码                                   00000000  00000000   00000000   11111111 反码

1111   1111  补码                                  00000000   00000000   00000000   11111111  原码

                                                                                                      2^8-1=255;(原反补相同)

            32位     64位

char       1        1

short        2       4

指针        4        8

int          4         4

double    8        8

float        4         4

long        4        8

longlong  8      8

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值