隐式与显示类型转换

隐式类型转换

隐式类型转换式是从范围小的数据类型转换成范围大的数据类型,是由编译器以安全的方式自动执行的。
隐式转换主要是整数类型到浮点类型转换示例代码如下:

 int a = 100; 
 double d = a; //将int类型转换为double类型 
 float f = 3.14f; 
 d = f; //将float类型转换为double类型 

隐式数值转换包括以下几种:
1、从 sbyte 类型到 short,int,long,float,double,或 decimal 类型。
2、从 byte 类型到short,ushort,int,uint,long,ulong,float,double,或decimal类型。
3、从 short 类型到 int,long,float,double,或 decimal 类型。
4、从 ushort 类型到 int,uint,long,ulong,float,double,或 decimal 类型。
5、从 int 类型到 long,float,double,或 decimal 类型。
6、从 uint 类型到 long,ulong,float,double,或 decimal 类型。
7、从 long 类型到 float,double,或 decimal 类型。
8、从 ulong 类型到 float,double,或 decimal 类型。
9、从 char 类型到 ushort,int,uint,long,ulong,float,double,或 decimal 类型。
10、从 float 类型到 double 类型。

显示类型转换

显示类型转换将对象强制转换成另一个类型。
虽然有时候不得不使用强制类型转换,但其实这种方法是非常危险的。
举例如下:

1 long dbl_num = 12345678; 
2 int k = (int) dbl_num ;//此处运用了强制转换

将双精度浮点型(double)强制转换成整型(int),如果表达式是:int k=(int) dbl_num; 编译器会执行隐式转换,但是会因为这是大数据类型转换成小数据类型不符合隐式转换的规则而报错,要在赋值对象中加上(int)告诉编译器此处运用强制转换。
在使用显示转换中非常危险的情况是大数据类型里的值转换到小数据类型,但小数据类型装不下超出范围的值就会导致数值严重失准。
列子如下:

long dbl_num = 12345678910; 
int k = (int)dbl_num;//此处运用了强制转换

当db1_num(long类型)中的值强制转换成k(int类型)的值,int类型的k装不下(long类型)db1_num中的值编译器不会提醒报错,只有在打印输出的时候看到结果严重失准(上代码运行结果:-2147483648)。

要想安全的使用强制类型转换必须对涉及类型和编译器实现转换过程都非常了解。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值