首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 第二书店 程序员
您的位置:DotNet->.Net的数据类型复习

.Net的数据类型复习2008-04-24 来自:java060515  [收藏到我的网摘]

有了前次float类型的教训以后,我开始复习C#的数据类型,今天在网上发现一篇有意识的文章:

short s=0;
s = s + 1;

short s=0;
s += 1;

这两个表达式有什么区别,会报什么错误?
头晕了,我哪到群里去问,很多朋友都说两个没有区别。

还是用事实来说话。测试:

经测试:

第一个会报错:错误 1 无法将类型“int”隐式转换为“short”。存在一个显式转换(是否缺少强制转换?) E:\MVC\Test\Test\Form1.cs 40 17 Test

第二个通过编译,运行正常。

后来找到解释:

s = s + 1; 由于 1 默认是int型的,s是short的,"s+1"的结果默认是int的,把int的结果赋值给short时会报错,损失精度了,必须写成 s = (short)(s+1) 来强制转化一下

s+=1; 在编译时已经明确最后要赋值给s,即short型的,所以会在内部自动进行转换的,
自动转换一般从低的往高的转换,所以第一个会报错
呵呵,原来如此。顺便把C#的数据类型贴上,大家一起复习:

#是基于Microsoft的.net框架的,他的基础部分就是共享的通用类型系统(CTS,Common Type System)。下面是C#和java数据类型的等价类型。

本文来自于CSDN博客

推荐人评论

有了前次float类型的教训以后,我开始复习C#的数据类型,今天在网上发现一篇有意识的文章.

用户评论

正在载入评论列表...

是谁推荐了此篇文章

专家头像付江CSDN频道编辑
个人blog发送信息
付江推荐的其他文章

热点新闻

热点评论

    精彩专题

    资源下载

      网站简介广告服务网站地图帮助联系方式诚聘英才English问题报告
    北京世纪乐知数码科技有限公司  版权所有  京 ICP 证 020026 号
    Copyright © 2000-2006, CSDN.NET, All Rights Reserved