整型提升

我不是女神ヾ 2023-09-24 22:33 217阅读 0赞

何为整型提升

C的整型算术运算总是至少以缺省整型类型的精度来进行的,我个人的理解是:C语言算术运算中字节数少于整型字节数的数据类型在进行整形运算中会被转化为整型数据,这个过程就被成为被称为整型提升。

为什么要整型提升

一般表达式的整型计算是在电脑上的CPU相应的运算器执行,然而CPU的运算器ALU的操作数的字节大小一般是int类型的字节大小,其次CPU中的寄存器的大小也等于int类型的字节大小,而我们知道,数据在被运算的时候不是直接储存在ALU中,而是储存在储存器当中,但通常ALU的字节大小与寄存器的字节大小相等。所以小于4个字节的整型在相加时,在CPU中通常会先转化为CPU中操作数的标准字节长度。

一般cpu是难以实现两个字节的直接相加运算。所以,一般长度小于int类型的整型值,都必须转化为int或unsigned int类型再送入CPU中计算。

怎样整型提升

整型提升有两个规则:

1 如果是无符号的,则高位都补0

2 如果是有符号的,则高位都补符号位

注:在计算机中任何数据储存都是二进制的补码

这里就给大家演示几个例子

6ecd272d3560a9e9ce92edd5d38d518b.png

a79129f7009a4328af9f75a23e475e17.png

ff88abdf3b835b74b0770c2fe8eddc35.png

注意事项:

  1. 它们在储存时是不发生整型提升的,发生整型提升的前提是它们参与了整型运算

char a = -1(这样是不发生的) a + 23(这种时候才发生)

  1. 在运算结束后,会发生截断,会返回原来类型的字节数(留低位截高位)

char类型

截断前 0000 0000 0000 0000 0000 0000 0000 0001

截断后 0000 0001

发表评论

表情:
评论列表 (有 0 条评论,217人围观)

还没有评论,来说两句吧...

相关阅读

    相关 提升

    何为整型提升 C的整型算术运算总是至少以缺省整型类型的精度来进行的,我个人的理解是:C语言算术运算中字节数少于整型字节数的数据类型在进行整形运算中会被转化为整型数据,这个

    相关 golang:

    > Go语言的数值类型分为以下几种:整数、浮点数、复数,其中每一种都包含了不同大小的数值类型,例如有符号整数包含 int8、int16、int32、int64 等,每种数值类型

    相关

    Go语言基础之基本数据类型 除了基本的整型,浮点型,布尔型,字符串外,还有数组,切片,结构体,函数,map,通道(channel)等,Go语言的基本类型和其他语言大同小异