4.1.1 隐式数值转换
隐式数值转换包括以下几种:
从sbyte类型到short、int、long、float、double、decimal类型;
从byte类型到short、ushort、int、uint、long、ulong、float、double、decimal类型;
从short类型到int、long、float、double、decimal类型;
从ushort类型到int、uint、long、ulong、float、double、decimal类型;
从int类型到long、float、double、decimal类型;
从uint类型到long、ulong、float、double、decimal类型;
从long类型到float、double、decimal类型;
从ulong类型到float、double、decimal类型;
从char类型到ushort、int、uint、long、ulong、float、double、decimal类型;
从float类型到double类型。
其中,从int、uint、long到float以及从long到double的转换可能会导致精度下降,但不会引起数量上的丢失,其他的隐式数值转换则不会有任何信息丢失。结合在“数据类型”一章中学习到的值类型的取值范围,可以发现隐式数值转换实际上就是从低精度的数值类型到高精度的数值类型的转换。
从上面的10种类型可以看出,不存在到char类型的隐式转换,这意味着其他整型值不能自动转换为char类型,这一点需要特别注意。
下面的程序给出了隐式数值转换的例子。
【程序清单4-1】
程序的输出如图4-1所示。
图4-1 不同类型数据的数值
如果在上面程序中的“y=65535;”语句之后再加上一句
y=y+1;
重新编译程序时,编译器将会给出一条错误信息:
Can not implictly convert type′int′to type′ushort′
这说明,从整数类型65536到无符号短整型y不存在隐式转换。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。