黑马程序员技术交流社区

标题: 关于类型转换 [打印本页]

作者: 王春祥    时间: 2012-3-9 13:04
标题: 关于类型转换
ppt里有一段类型转换的程序
byte b=3;
b=b+4;
b=(byte)b+4;
解释说第二句会报错,我知道b在参与运算前会自动转为int类型,那第二句左边的b不是也自动转换了吗,为什么还要改成第三句呢?另外第三句不用写成b=(byte)(b+4);吗,算数运算符优先级更高吗?
作者: 薛波    时间: 2012-3-9 13:13
第二句左边的是不会提升的,b只是一个引用而已,第二句就相当于把int 赋值给一个byte型变量。第三句是应该要加(byte)(b+4)的。
作者: 贠(yun)靖    时间: 2012-3-9 15:10
系统默认是可以从低位转到高位(即自动类型提升),这样不会损失精度。高位像低位转换必须强制转换,不然会编译失败。
      第三句写错了   必须强转  你不加括号  只是强转了 b    应该是b=(byte)(b+4)
    还有你说的自动提升时对  但是你b提升到int后 在和4相加  又要赋值给byte的b  这就得强转(b+4)了

作者: 王春祥    时间: 2012-3-9 19:03
b只是一个引用而已
又要赋值给byte的b

第二句左边的b为什么没自动转换还是没明白,看了看引用更糊涂了,现在基础太差了,得赶紧学
作者: 泮和顺    时间: 2012-3-9 21:21
b=b+4;即b=(b+4);右边提示成整形赋给左边的字节类型当然就出错
b+=4;就自动转换了,4应该是自动转成字节类型了 有区别的。





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