黑马程序员技术交流社区
标题:
关于类型转换
[打印本页]
作者:
王春祥
时间:
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