DBMNG数据库管理与应用

所有存在都是独创。
当前位置:首页 > MySQL > 常见问题

强制转换不兼容的类型

3.9.2 强制转换不兼容的类型

尽管自动类型转换很有帮助,但是它们不能完全满足全部需要。例如,如果希望将int类型的值赋给byte变量,会发生什么情况呢?不会自动执行转换,因为byte比int更小。这种转换有时被称为缩小转换(narrowing conversion),因为是显式地使数值变得更小以适应目标类型。

为了实现两种不兼容类型之间的转换,必须使用强制类型转换。强制类型转换只不过是一种显式类型转换,它的一般形式如下所示:

  1. (target-type) value 
其中,target-type指定了期望将特定值转换成哪种类型。例如,下面的代码片段将int类型的值强制转换为byte类型。如果整数的值超出了byte类型的范围,结果将以byte类型的范围为模(用整数除以byte范围后的余数)减少。
 

当将浮点值赋给整数类型时会发生另一种不同类型的转换:截尾(truncation)。您知道,整数没有小数部分。因此,当将浮点值赋给整数类型时,小数部分会丢失。例如,如果将数值1.23赋给一个整数,结果值为1,0.23将被截去。当然,如果整数部分的数值太大,以至于无法保存到目标整数类型中,那么数值将以目标类型的范围为模减少。

下面的程序演示了一些需要进行强制类型转换的转换:

 
 

这个程序产生的输出如下所示:

 

下面对每个转换进行分析。当数值257被强制转换为byte变量时,结果是257除以256(byte类型的范围)的余数,也就是1。当将d转换成int类型时,小数部分丢失了。当将d转换成byte类型时,小数部分也丢失了,并且值以256为模减少,结果为67。
本站文章内容,部分来自于互联网,若侵犯了您的权益,请致邮件chuanghui423#sohu.com(请将#换为@)联系,我们会尽快核实后删除。
Copyright © 2006-2023 DBMNG.COM All Rights Reserved. Powered by DEVSOARTECH            豫ICP备11002312号-2

豫公网安备 41010502002439号