前言
在写了这么久的习题博客,我发现其中非常爱考查的一个知识就是类型的转换,比如不同类型之间的加减乘除、比较大小和赋值运算等,这里面涉及最为多的就是隐式类型转换,所以在此专门写一个关于类型转换的知识点总结,也希望大家多多支持,一起努力!
一、隐式类型转换
其中最热门的考点之一就是隐式类型的转换,直接介绍转换规则:
1. 转换规则
1. 低字节的类型转换成高字节的类型(char -> short -> int -> long -> float -> double)
2. 有符号数转换成无符号数
3. 转换的时候,不是改变原变量的类型,而是原变量拷贝一个临时变量,让这个临时变量去改变,原变量不变;
4. 在赋值运算符中,左操作数的字节数小于右操作数,会发生截断,反之为提升
2. 整型提升:
在面对低字节到高字节的转换,发生的就是整型提升
【规则】
1. 无符号数的提升,高位补0
2. 有符号数的提升,高位补符号位
3. 截断
高字节转换为低字节,发生截断
【规则】
1. 截断从低位开始一个一个数,数到对应的字节处截断
2. 截断之后,如果是个无符号数,那最高位的数字就是数值位
3. 截断之后,如果是个有符号数,那最高位的数字就是符号位
二、强制类型转换
这是一种显式的类型转换,直接在变量前面用括号加上我们要转换成的类型
【规则】
1. 不影响原变量的类型,只是拷贝了一个临时变量,作为转换的对象;
2. 同样会发生整型提升和截断;