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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

就是这本书
有这么一道题
我感觉应该选择D啊,因为报错原因不是第四句报错,原因是可能丢失精度吗?
       byte b=3,c=5;
这种定义方法没有错误,原因是两个byte型变量相加,系统自动提升结果类型为int,
所以错误的是
       byte d=b+c;
有人给我解释,说错误应该是b和c应该定义为int,但是这样的话,
       byte d=b+c;
不同样应该改动么?
而且,为什么int a=1,b=2;int c=a+b;不报错呢?

6 个回复

正序浏览
stonelove 发表于 2015-10-9 11:20
对啊 所以书上答案错了??

我觉得CD都对
回复 使用道具 举报
boboyuwu 发表于 2015-10-9 10:36
谁跟你说2个byte相加自动提升成int的 乱理解

老师是这样说的
回复 使用道具 举报
boboyuwu 发表于 2015-10-9 11:17
d是变成了int型啊    所以要强制换换成byte才不报错

对啊 所以书上答案错了??
回复 使用道具 举报
stonelove 发表于 2015-10-9 10:49
不是这样说的么?两个byte类型的变量相加,系统会默认用int类型存储两者之和,这和自动提升成int不一样么 ...

d是变成了int型啊    所以要强制换换成byte才不报错
回复 使用道具 举报
boboyuwu 发表于 2015-10-9 10:36
谁跟你说2个byte相加自动提升成int的 乱理解

不是这样说的么?两个byte类型的变量相加,系统会默认用int类型存储两者之和,这和自动提升成int不一样么?而且,请问这道题为什么选择C啊
回复 使用道具 举报
谁跟你说2个byte相加自动提升成int的 乱理解
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马