黑马程序员技术交流社区
标题:
为什么 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