整型提升

简介: 整型提升

何为整型提升

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

为什么要整型提升

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

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

怎样整型提升

整型提升有两个规则:

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

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

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

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

注意事项:

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

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

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

char类型

截断前 0000 0000 0000 0000 0000 0000 0000 0001

截断后 0000 0001

目录
相关文章
|
3月前
取一个整数a从右端开始的 4~7 位
取一个整数a从右端开始的 4~7 位。
24 7
|
4月前
比较三个整数大小
比较三个整数大小
63 13
|
4月前
|
存储 编译器 C语言
取一个整数a从右端开始的4~7位。
取一个整数a从右端开始的4~7位。
40 1
|
8月前
63.取一个整数a从右端开始的4~7位。
63.取一个整数a从右端开始的4~7位。
45 0
|
7月前
取一个整数 a 从右端开始的 4~7 位
【6月更文挑战第23天】取一个整数 a 从右端开始的 4~7 位。
50 9
|
8月前
|
存储 编译器
整型和浮点型数据的存储(1)
整型和浮点型数据的存储(1)
47 2
|
8月前
求两个整数之和
两幅图片展示,无文字描述。第一张图片链接:`https://ucc.alicdn.com/pic/developer-ecology/jsj5v54nhc5lk_9a19903e665642b388dedfa69ba6dd98.jpg`,第二张图片链接:`https://ucc.alicdn.com/pic/developer-ecology/jsj5v54nhc5lk_9698cabf5d2f4ce38f6ea21a4ee8430e.jpg`。
44 0
|
8月前
|
编译器 C++
【C/C++】C/C++编程——整型(二)
【C/C++】C/C++编程——整型(二)
85 2
|
8月前
|
存储 编译器 C++
【C/C++】C/C++编程——整型(一)
【C/C++】C/C++编程——整型(一)
66 1
|
8月前
|
存储
进制转换和整型提升
进制转换和整型提升