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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王春祥 中级黑马   /  2012-3-9 13:04  /  1766 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

ppt里有一段类型转换的程序
byte b=3;
b=b+4;
b=(byte)b+4;
解释说第二句会报错,我知道b在参与运算前会自动转为int类型,那第二句左边的b不是也自动转换了吗,为什么还要改成第三句呢?另外第三句不用写成b=(byte)(b+4);吗,算数运算符优先级更高吗?

4 个回复

倒序浏览
第二句左边的是不会提升的,b只是一个引用而已,第二句就相当于把int 赋值给一个byte型变量。第三句是应该要加(byte)(b+4)的。
回复 使用道具 举报
系统默认是可以从低位转到高位(即自动类型提升),这样不会损失精度。高位像低位转换必须强制转换,不然会编译失败。
      第三句写错了   必须强转  你不加括号  只是强转了 b    应该是b=(byte)(b+4)
    还有你说的自动提升时对  但是你b提升到int后 在和4相加  又要赋值给byte的b  这就得强转(b+4)了
回复 使用道具 举报
b只是一个引用而已
又要赋值给byte的b

第二句左边的b为什么没自动转换还是没明白,看了看引用更糊涂了,现在基础太差了,得赶紧学
回复 使用道具 举报
b=b+4;即b=(b+4);右边提示成整形赋给左边的字节类型当然就出错
b+=4;就自动转换了,4应该是自动转成字节类型了 有区别的。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马