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

本文介绍了C#中的数据类型转换概念,包括隐式转换和显式转换的区别及应用场景,并通过示例代码详细展示了不同类型间转换的过程及注意事项。

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

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

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

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

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

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

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

ContractedBlock.gifExpandedBlockStart.gifCode
<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->staticvoidMain(string[]args)
{
inti=int.MaxValue;
longl=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赋值为i,int显然没有足够的空间存储赋予的值,这个时候i中的值是多少呢?-1。

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

<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->byteb=200;
b
=(byte)(b+100);
System.Console.WriteLine(b);

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

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

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

<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->byteb=200;
b
+=100;
System.Console.WriteLine(b);

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值