黑马程序员技术交流社区

标题: 为什么 byte a=1; byte b=2; byte c=a+b出错 [打印本页]

作者: 辉Se天空    时间: 2015-9-20 20:17
标题: 为什么 byte a=1; byte b=2; byte c=a+b出错
byte a=1; byte b=2; byte c=a+b出错

作者: hui18927318227    时间: 2015-9-20 20:17
因为 a 和 b 变量会在计算时自动转换成int类型   所以应该在前面加一个强制转换char(a+b)
作者: 辉Se天空    时间: 2015-9-20 20:21
hui18927318227 发表于 2015-9-20 20:17
因为 a 和 b 变量会在计算时自动转换成int类型   所以应该在前面加一个强制转换char(a+b) ...

谢谢,清楚了!!!
作者: wjy0916    时间: 2015-9-20 20:28
这是个数据类型的问题
a+b被当做int所以需要强转

        public static void main(String[] args)
    {
        byte a = 1;
        byte b=2;
        byte c=a;
        c+=b;
        System.out.print(c);
   }

写成上面这样就是不会出错。
        c+=b;
        c= a+b;
是不同的
前者数据类型是不变的,后面数据类型是int
感觉这样会比较好。
作者: 水果牛牛    时间: 2015-9-20 21:43
hui18927318227 发表于 2015-9-20 20:17
因为 a 和 b 变量会在计算时自动转换成int类型   所以应该在前面加一个强制转换char(a+b) ...

学习了,谢谢
作者: tianweidong    时间: 2015-9-20 23:07
涉及到了类型转换
作者: hepann    时间: 2015-9-21 07:58
张见识 学习了
作者: xuxu5112    时间: 2015-9-21 16:26
学习了,
作者: 年强    时间: 2015-9-21 19:59
数据类型的转换遵循由低精度可以向高精度转,反之不行。byte与int精度不同,出错。做一个强转就行了

作者: 菊花爆满山    时间: 2015-9-21 20:43
说的都很好
作者: shike951128    时间: 2015-9-24 17:55
应该是编译器的事情吧,我觉得。
作者: 周建星    时间: 2015-9-24 20:27
已经定义成 byte  了,,是因为  +  作为运算符 只限定于int  中的原因吗??
作者: Windnon    时间: 2015-9-30 23:07
学习了,这个真的没注意过~
作者: 婷婷老师    时间: 2015-10-8 10:40
a 和 b 变量会在计算时自动转换成int类型   所以应该在前面加一个强制转换char(a+b)




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