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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 肖银 中级黑马   /  2013-12-22 22:26  /  1141 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 肖银 于 2013-12-25 22:25 编辑

新手请教,以下四个语句,为什么第四个是错误的.


byte b = 1 + 1;  //对:
byte b = 1; b = ++b; //对:
byte b = 1; b = b += 1;  //对:
byte b = 1; b = b + 1; //错误
  

评分

参与人数 1黑马币 +3 收起 理由
乔兵 + 3

查看全部评分

2 个回复

倒序浏览
byte b+=1  的时候你定义了b(其实是在使用之前已经做了强制转换)是一个byte型变量,可以正常运算
而byte b=b+1  当运算b+1的时候,发现b没有被定义,所以出现了两种数据类型不一。精度高的转精度低的,会发生丢失精度。

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

回复 使用道具 举报
b=b+1;结果默认为int类型, 转化后损失精确度,需要强制转化才能编译通过。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马