隐式类型转换

隐式类型转换通常有两种情况:赋值转换和运算转换。 赋值转换:将一种类型的数据赋值给另外一种类型的变量时,发生隐式类型转换。 比如: 在对变量赋值时,若等号两边的数据类型不同,需要把右边表达式的类型转换为左边变量的类型,这可能会导致数据失真(精度降低),所以隐式类型转换不一定是安全的。 运算转换:C语言中不同类型的数据需要转换成同一类型,才可以进行计算。 字符型、整型、浮点型之间的变量通过隐式类型转换,可以进行混合运算(不是所有数据类型之间都可以隐式转换),转换规则如下: 转换按数据长度增加的方向进行,以保证数据精度不降低。 比如int类型和double类型相加时,int类型就会被隐式转换为double类型,然后再进行运算; 在条件判断中,非布尔类型自动转换为布尔类型。

隐式类型转换
因为字面量 1 是 int 类型,它比 short 类型精度要高,因此不能隐式地将 int 类型向下转型为 short 类型。

short s1 = 1;
// s1 = s1 + 1;
但是使用 += 或者 ++ 运算符会执行隐式类型转换。 

s1 += 1;
s1++;
 上面的语句相当于将s1 + 1 的计算结果进行了向下转型:

s1 = (short) (s1 + 1);
当你添加 int 和 long 时,

int 对象被强制转换为 long,两者被添加,你会得到 long 对象。
但是长对象不能隐式转换为 int。所以,你必须明确地这样做。
但编码方式是,它执行类型转换。

+=i=(int)(i+m)
 在 Java 中,当赋值操作右侧的表达式类型可以安全地提升为赋值左侧的变量类型时,将自动执行类型转换。因此,我们可以安全地分配:

 byte -> short -> int -> long -> float -> double. 
反之亦然。例如,我们无法自动将 long 转换为 int,因为第一个比第二个需要更多的存储空间,因此信息可能会丢失。要强制进行这种转换,我们必须进行显式转换。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值