A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 蔡志涛 中级黑马   /  2013-6-9 18:06  /  1640 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 蔡志涛 于 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);

评分

参与人数 1技术分 +1 收起 理由
苏波 + 1

查看全部评分

5 个回复

倒序浏览
  1. byte var1;//byte的最大值是255
  2.             short var2 = 281;//16位的数

  3.             var1 = (byte)var2;//281转为二进制是:000010 0011001超过8位,左边八位溢出,
  4.             //var1只取到右边的8位数,即0011001,转换为10进制就是25
  5.             
  6.             Console.WriteLine("var2:{0}",var2);
  7.             Console.WriteLine("var1:{0:d}",var1);
复制代码

评分

参与人数 1技术分 +1 收起 理由
苏波 + 1

查看全部评分

回复 使用道具 举报
学习了。。。
回复 使用道具 举报
回复 使用道具 举报

噢,了然啦,谢谢~~共同进步哈
回复 使用道具 举报
  1.             byte var1;//MaxValue = 255
  2.             short var2 = 281;//MaxValue = 32767
  3.             //把var2强制转换成byte类型,并把值赋给var1
  4.             var1 = (byte)var2;//也可以这样理解:var1=281%255
  5.             Console.WriteLine("var2:{0}", var2);
  6.             Console.WriteLine("var1:{0}", var1);//因为默认下标从0开始,所以就算25了。
  7.             Console.ReadKey();

  8.            我这样理解对吗?谢谢!
复制代码

评分

参与人数 1技术分 +1 收起 理由
苏波 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马