• 隐式转换和显示转换


    隐式转换由系统来做的,显示转换由程序员自己来做的

    char c;
    int a = c; //隐式转换 ok
    int b = (int )c; //显示转换 ok
    char d = a; //隐式转换 error
    char e = (char)a;//显示转换 ok

        关于隐式转换和显示转换,每种语言都有的,一般常用到的场合,一种是写运算表达式的时候,要保持整体的数据类型一致和计算准确,比如有一个变量a是int型,但是它是通过加减乘除得到的,那么在运算中就要考虑用显示转换,除的运算需要转换成float或double,再把结果强制转换为int;再一个就是传参数的时候,需要注意哪些需要显示转换,或者对集合赋值的时候也要注意类型的问题。

    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类型。

    2.显式类型转换

    显式类型转换,即强制类型转换。与隐式转换相反,而且强制转换会造成数据丢失。

    从sbyte到byte,ushort,uint,ulong,或char。

    从byte到sbyte或char。

    从short到sbyte,byte,ushort,uint,ulong,或char。

    从ushort到sbyte,byte,short,或char。

    从int到sbyte,byte,short,ushort,uint,ulong,或char。

    从uint到sbyte,byte,short,ushort,int,或char。

    从long到sbyte,byte,short,ushort,int,uint,ulong,或char。

    从ulong到sbyte,byte,short,ushort,int,uint,long,或char。

    从char到sbyte,byte,或short。

    从float到sbyte,byte,short,ushort,int,uint,long,ulong,char,或decimal。

    从double到sbyte,byte,short,ushort,int,uint,long,ulong,char,float,或decimal。

    从decimal到sbyte,byte,short,ushort,int,uint,long,ulong,char,float,或double。

    当转换有丢失信息或导致异常抛出,转换按照下列规则进行:

    对于从一种整型到另一种整型的转换,编译器将针对转换进行溢出检测,如果没有发生溢出,转换成功,否则抛出一个OverflowException异常。这种检测还与编译器中是否设定了checked选项有关。

    对于从float,double,或decimal到整型的转换,源变量的值通过舍入到最接近的整型值作为转换的结果。如果这个整型值超出了目标类型的值域,则将抛出一个OverflowException异常。

    对于从double到float的转换,double值通过舍入取最接近的float值。如果这个值太小,结果将变成正0或负0;如果这个值太大,将变成正 无穷或负无穷。如果原double值是Nan,则转换结果也是NaN。

    对于从float或double到decimal的转换,源值将转换成小数形式并通过舍入取到小数点后28位(如果有必要的话)。如果源值太小,则结果为0;如果太大以致不能用小数表示,或是无穷和NaN,则将抛出InvalidCastException异常。

    对于从decimal到float或double的转换,小数的值通过舍入取最接近的值。这种转换可能会丢失精度,但不会引起异常。

  • 相关阅读:
    第2课:关闭被黑客扫描的端口
    CentOS安装zip及用法
    网络安全目录
    第1课:电脑基础命令讲解
    SQL注入目录
    windows下安装redis
    CentOS安装rar及用法
    CentOS安装OpenOffice
    hadoop异常
    删除CentOS系统自带的jdk
  • 原文地址:https://www.cnblogs.com/binyao/p/3059595.html
Copyright © 2020-2023  润新知