黑马程序员技术交流社区
标题:
关于类型转换的问题
[打印本页]
作者:
蔡志涛
时间:
2013-6-9 18:06
标题:
关于类型转换的问题
本帖最后由 蔡志涛 于 2013-6-10 10:17 编辑
下述代码,为什么var1的结果是25??
byte var1;
short var2 = 281;
var1= (byte)var2;
Console.WriteLine("var2:{0}", var2);
Console.WriteLine("var1:{0}", var1);
作者:
fcyan86
时间:
2013-6-9 18:24
byte var1;//byte的最大值是255
short var2 = 281;//16位的数
var1 = (byte)var2;//281转为二进制是:000010 0011001超过8位,左边八位溢出,
//var1只取到右边的8位数,即0011001,转换为10进制就是25
Console.WriteLine("var2:{0}",var2);
Console.WriteLine("var1:{0:d}",var1);
复制代码
作者:
胡章诚
时间:
2013-6-9 19:15
学习了。。。
作者:
许庭洲
时间:
2013-6-9 20:27
fcyan86 发表于 2013-6-9 18:24
值得学习ing!
作者:
蔡志涛
时间:
2013-6-9 20:58
fcyan86 发表于 2013-6-9 18:24
噢,了然啦,谢谢~~共同进步哈
作者:
李奔
时间:
2013-6-9 21:25
byte var1;//MaxValue = 255
short var2 = 281;//MaxValue = 32767
//把var2强制转换成byte类型,并把值赋给var1
var1 = (byte)var2;//也可以这样理解:var1=281%255
Console.WriteLine("var2:{0}", var2);
Console.WriteLine("var1:{0}", var1);//因为默认下标从0开始,所以就算25了。
Console.ReadKey();
我这样理解对吗?谢谢!
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2