黑马程序员技术交流社区

标题: 经过强转后,a与b的值是什么?? [打印本页]

作者: 塞肥肥塞牙人    时间: 2014-9-6 21:56
标题: 经过强转后,a与b的值是什么??
Short a =128;byte b =(byte)a

作者: The_king丶    时间: 2014-9-6 22:13
short和byte不能互相转,即使真的能也是超过了范围,为-127
作者: 粺¹³¼畅    时间: 2014-9-6 22:41
结果是-128;因为byte 范围-128-----127 ,可以理解成一个圆形范围,127的下一个值就是-128
作者: 粺¹³¼畅    时间: 2014-9-6 22:42
画了个图,你看看,帮助你理解。

2014-09-06_224058.png (3.17 KB, 下载次数: 24)

2014-09-06_224058.png

作者: bullfrog    时间: 2014-9-6 23:30
不能转,报错。
Short不能转,short可以,转完后得-128  0xff
作者: 塞肥肥塞牙人    时间: 2014-9-6 23:30
粺¹³¼畅 发表于 2014-9-6 22:42
画了个图,你看看,帮助你理解。

亲,不对吧,我还是认可沙发的
作者: 粺¹³¼畅    时间: 2014-9-6 23:37
塞肥肥塞牙人 发表于 2014-9-6 23:30
亲,不对吧,我还是认可沙发的

你的Short 是大写的S 不能转,要是小写的short,就是b = -128
作者: MeryStyle    时间: 2014-9-7 00:49
是 -8 么??
作者: 李天富    时间: 2014-9-7 12:49
short a=128,二进制是0000-0000 1000-0000,当执行byte b =(byte)a;的时候,由于byte变量只占用一个8位,所以就将0000-0000 1000-0000的最末8位存入byte变量b中,也就是说,b的值为1000-0000,这样1变成了最高位,所以是个负数,逐位取反得到0111-1111,即127,再加1的到128,就是说b=-128.
作者: MR.Sun    时间: 2014-9-7 14:46
硬要强转的话,就是-128.。。。
作者: 默默丶    时间: 2014-9-7 15:19
编译错误 byte类型的最大值是127  如果在-128到127之间的话就是byte类型的a=b
作者: clh    时间: 2014-9-7 15:59
试一下,不就知道了
作者: 优乐    时间: 2014-9-7 16:48
byte是一个字节,8位,范围-2的8次方-128,到2的8次方减1就是127





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2