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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 严晗哲 中级黑马   /  2015-4-29 22:19  /  698 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

byte b = 127;
b += 1;          //这里即使127+1的结果超过了b的范围,还是会强转成byte,b=-126,不过会发生精度丢失。

8 个回复

倒序浏览
xfliyy 来自手机 中级黑马 2015-4-29 22:39:00
沙发
这个+=帮你把转换做了
回复 使用道具 举报
为什么我的为-128??
回复 使用道具 举报
等一下,byte的范围不是 -128到127吗?加1,应该是 -128
回复 使用道具 举报
敲了下,结果是-128,谁能详细解答下结果-128如何得到呢  好困惑
回复 使用道具 举报
是有点意思。。
回复 使用道具 举报
没看到答案。。。
回复 使用道具 举报
byte 是单字节的数据 所以一共有八个位
0000 0000
第一位是符号位 0 表示数据为正 1 表示数据为负
这时候 0 这一个自然数 就出现问题了,因为 0 是没有正负性的
所以就出现了  0000 0000   与  1000 0000
这两个带符号的 0   所以存储数据的时候,我们强制认为  1000 0000 等价于 -128
那么, 自然数127 的存储为 0111 1111
这时候 b+=1  算出的结果为  1000 0000
所以结果显示为 -128  
回复 使用道具 举报 1 0
鸡脑壳 发表于 2015-4-30 09:54
byte 是单字节的数据 所以一共有八个位
0000 0000
第一位是符号位 0 表示数据为正 1 表示数据为负

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