.net的数据类型复习

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

short  s = 0 ;
=  s  +   1 ;

short  s = 0 ;
+=   1 ;

这两个表达式有什么区别,会报什么错误?

头晕了,我哪到群里去问,很多朋友都说两个没有区别。

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

经测试:

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

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

后来找到解释:

=  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数据类型的等价类型。

 c#数据

类型

java数据

类型 

运行时

类型

大小

(字节)

范围 描述 
 bool  boolean  Boolean n/a true or false 布尔值 
 byte  Byte 1 0~255 无符号整数
 char char Char 2 0x0000~0xffff Unicode字符
 decimal   Decimal 

 -79,228,162,514,264,337,593,543,950,335~

79,228,162,514,264,337,593,543,950,335

 十进制数字
 double double Double 8

 -1.79769313486232e308~

1.79769313486232e308

 双精度64位数字
 float float Single 4 -3.402823e38~3.402823e38 单精度32位数字
 int  int Int32 4 -2,147,483,648~2,147,483,647 有符号整数
 long long Int64 8

 -9,223,372,036,854,775,808~

9,223,372,036,854,775,807

 有符号整数
 sbyte byte SByte 1 -128~127 有符号整数
 short short Int16 2 -32768~32767 有符号整数
unit  UInt32 4 0~4,294,967,295 无符号整数
 ulong  UInt64 8 0~184,467,440,737,095,551,615 无符号整数
 ushort  UInt16 2 0~65535 无符号整数

在c#中,所有书类型也都是System的一部分,可以在其中引用。如bool可以引用为System.Boolean

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值