隐式类型转换
LeonardoFox一、 隐式转换基础
1. 什么是隐式转换?
当不同数据类型的变量进行计算、赋值等操作时,编译器会自动将它们转换为同一种类型后再进行处理,这个过程称为隐式类型转换。
2. 取值范围大小顺序
在讨论转换规则前,需要明确各类型的取值范围(权重)大小:
char<short<int<long<long long<float<double
二、 核心转换规则
规则 1:常规晋升(小拓宽到大)
- 原理:当取值范围小的类型与取值范围大的类型进行混合运算时,范围小的类型会先自动提升为范围大的类型,然后再进行运算。
- 目的:防止数据溢出,保证运算精度。
规则 2:整型提升(整型特例)
- 原理:
char和short类型的数据在参与运算时,无论有没有和更高等级的类型混合,都会直接先无条件提升为int类型,然后再进行运算。 - 注意:哪怕是两个
short相加,结果也是int。
三、 练习题
案例 1:两个 short 相加
1 | short b1 = 10; |
- 推导过程:根据规则 2,
b1和b2虽然都是short,但在相加的那一刻,它们都会先被强制提升为int。 - 最终结果类型:int
案例 2:混合基本类型与浮点型
1 | int i = 10; |
- 推导过程:
- 先算
i + n:int遇到long,根据规则 1,i提升为long,相加结果为long。 - 再算
(i + n) + d:上一步的long结果遇到double,根据规则 1,long提升为double。
- 先算
- 最终结果类型: double
案例 3:整型多阶段混合
1 | short b = 10; |
- 推导过程:
- 先算
b + s:b是short,根据规则 2先提升为int。接着int遇到long,根据规则 1,再提升为long。相加结果为long。 - 再算
(b + s) + n:上一步的long结果遇到long long,根据规则 1,提升为long long。
- 先算
- 最终结果类型:long long
喜欢这篇文章的人也看了
评论
匿名评论隐私政策




