关于整型提升
基于一个问题展开:
1 |
|
问输出的结果是什么?
答案是-1
1.什么是整型提升?
首先,我们应该知道这一点:C语言中整型运算总是至少以缺省整型类型的精度来进行的。
这句话什么意思呢?用大白话说就是:C语言中字节数少于整型字节数的数据类型在进行整型运算时,该类型的数据会被默认转为整型数据。
2.为什么要进行整型提升
**由计算机体系结构决定**:
计算机中的计算都由CPU完成,具体来说是由CPU中的运算器(ALU)完成的。而ALU一般在被设计时,其操作对象——操作数的字节大小被要求至少是int的字节数。并且数据在被运算时,数据并不是直接在ALU上存储的,而是存储在CPU的寄存器(register)中,而通用寄存器的字节大小与ALU操作数的字节大小保持一致。
3.什么时候进行整型提升
操作数为char 或者是short,即一个字节或俩个字节
4.如何进行整型提升
a. 如果是无符号数,则高位直接补0;
b. 如果是有符号数,则高位全补符号位。
一点相关的知识:计算机中操作数以其补码形式存在,正数补码是本身,负数补码是反码+1
本文作者:
lllry
本文链接: http://wusterlllry.xyz/2023/05/26/%E2%80%9C%E6%95%B4%E5%9E%8B%E6%8F%90%E5%8D%87%E2%80%9D/
版权声明: 本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。转载请注明出处!
本文链接: http://wusterlllry.xyz/2023/05/26/%E2%80%9C%E6%95%B4%E5%9E%8B%E6%8F%90%E5%8D%87%E2%80%9D/
版权声明: 本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。转载请注明出处!