数据类型转换:1人民币+1美元=?

数据类型转换是我们从小学就开始学习的内容,只不过在小学我们称为单位换算。比如一条狗加一匹马等于是多少呢?总不是两条狗或两匹马吧。我们需要把单位转为都可以计算的单位,比如动物。结果就是两只动物。这样的转换,我们称为数据类型转换。

C#中数据类型转换又分为隐式转换和显式转换。隐式转换是默认的转换,而显式转换就是必须明确说明的转换。

比如¥1+$1的问题,在国际贸易结算中,默认将人民币转换为美元,那计算的结果是¥1+$1=$1.14。但如果在国内贸易结算,就需要明确说明用什么货币基准来转换,如果转为人民币的话就是¥1+$1=8

这两个案例都很明确的说明,在数值的计算过程中,需要单位统一,在软件的开发过程中叫做数据类型一致。

C#中对数值类型的数据转换规定

数据容量小的类型转换为数据类型大的类型,是隐式转换,其变量中存储的数据值不会受到任何影响和变化。

数据容量大的类型转换为数据类型小的类型,是显式转换,如果远数据中存储的实际值大于目标类型能存储的值范围,则会发生值受损。显式转换又叫强制类型转换。

 

ContractedBlock.gif ExpandedBlockStart.gif Code
static void Main(string[] args)
{
    
int i = int.MaxValue;
    
long l = i;         //隐式转换 目标类型=源类型值
    i = (int)l;         //显式转换 目标类型=(源类型)源类型值
    System.Console.WriteLine(i);
    l 
= long.MaxValue;
    i 
= (int)l;
    System.Console.WriteLine(i);
}

 

上述代码首先将int的最大值保存在int类型的i中,又将i的值赋值给了long类型的l。由于long类型能存储的范围远远大于int,因此存放在long类型中的值不会受损。

又将l存储的值赋值为i,虽然这个时候l中保存的具体值不超过int的范围,但long类型比int类型大(你可以想象long的盒子比int的盒子大,大盒子哪怕放了一个小东西,但大盒子所占据的空间还是比小盒子大),所以要求显式转换。不过由于具体存的值够int存储,所以值没有受到影响。

最后一次,我们把long类型的最大值赋值为l,又把l赋值为iint显然没有足够的空间存储赋予的值,这个时候i中的值是多少呢?-1

为什么是-1?我们来看以下的经典转换

 

byte  b  =   200 ;
=  ( byte )(b  +   100 );
System.Console.WriteLine(b);

 

第二行中100是字面量所以的整数的字面量默认是int类型。byte类型容量小于int类型,应此byteint的类型转换是将byte显式转换为int,然后两个int类型之和为int,将相加后的值赋值给byte类型的b,就必须要强制类型转换。

得到的结果是44byte类型的最大值是255,并且从0开始存储。(b+100)超过byte最大值45。结果是44就说明当给予的值超过了当前类型能存储的范围,则C#默认从0重新开始存放值。

b赋值写成以下格式,不需要显示的声明类型转换,因为+=是赋值运算符。

 

byte  b  =   200 ;
+=   100 ;
System.Console.WriteLine(b);

 

转载于:https://www.cnblogs.com/shyleoking/archive/2009/06/21/1507614.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值