char——short——int——long——long long——float——double
以上数据类型规格从左到右依次增大
且相同类型的unsigned
规格大于signed
规格
发生混合运算时,运算式中的所有数据类型都会先转化为相同的数据类型,并且都转化为运算式中最大规格的数据类型,再发生运算。
规格小于int的数据类型char、short,是不具有运算能力的,故而这两个数据类型在发生运算时:
若参与运算的情况为:只有char
、只有short
、char
和short
的混合运算,则运算式中的数据类型全都转化为int
类型再进行运算。
若运算中存在数据类型的规格≥int
,则运算式中所有的数据类型转化为运算式中最大规格的数据类型。
整数字面量默认为int规格,即4字节
小数字面量默认为double规格,即8字节
截断与补长
截断发生在运算后,赋值前。整型存储截断高位,浮点型存储截断低位。
截断和补长相对
补长按照最高位来补,最高位为0则全补0,最高位为1则全补1。