黑马程序员技术交流社区
标题:
发现+=的赋值很有意思;
[打印本页]
作者:
严晗哲
时间:
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