黑马程序员技术交流社区

标题: 发现+=的赋值很有意思; [打印本页]

作者: 严晗哲    时间: 2015-4-29 22:19
标题: 发现+=的赋值很有意思;
byte b = 127;
b += 1;          //这里即使127+1的结果超过了b的范围,还是会强转成byte,b=-126,不过会发生精度丢失。

作者: xfliyy    时间: 2015-4-29 22:39
这个+=帮你把转换做了
作者: major2015    时间: 2015-4-29 22:56
为什么我的为-128??
作者: qinrh    时间: 2015-4-29 22:57
等一下,byte的范围不是 -128到127吗?加1,应该是 -128
作者: w_lin521    时间: 2015-4-30 07:40
敲了下,结果是-128,谁能详细解答下结果-128如何得到呢  好困惑
作者: Cat    时间: 2015-4-30 09:39
是有点意思。。
作者: an_lucas    时间: 2015-4-30 09:50
没看到答案。。。
作者: 鸡脑壳    时间: 2015-4-30 09:54
byte 是单字节的数据 所以一共有八个位
0000 0000
第一位是符号位 0 表示数据为正 1 表示数据为负
这时候 0 这一个自然数 就出现问题了,因为 0 是没有正负性的
所以就出现了  0000 0000   与  1000 0000
这两个带符号的 0   所以存储数据的时候,我们强制认为  1000 0000 等价于 -128
那么, 自然数127 的存储为 0111 1111
这时候 b+=1  算出的结果为  1000 0000
所以结果显示为 -128  
作者: 考不上黑马    时间: 2015-4-30 10:41
鸡脑壳 发表于 2015-4-30 09:54
byte 是单字节的数据 所以一共有八个位
0000 0000
第一位是符号位 0 表示数据为正 1 表示数据为负

很详细,赞




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