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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Boiled_Water   /  2014-6-5 08:29  /  13225 人查看  /  153 人回复  /   3 人收藏 转载请遵从CC协议 禁止商业使用本文

C和D是对的
回复 使用道具 举报
就C对,其他的都会让b自动提升转型为 int型的,因为C b+=1是直接赋值的 b还是byte型的
回复 使用道具 举报
看来功力还是不够。继续努力
回复 使用道具 举报
正确答案是c,因为1是默认的int型,+=运算符会在底层进行类型的强制转换!
回复 使用道具 举报
只有b会报错。刚看到题目是也想错了。以为a也有问题。
回复 使用道具 举报
学习一下
回复 使用道具 举报
b右边的运算会自动提升byte为int
回复 使用道具 举报
看看!!
回复 使用道具 举报
看来还是学的不够深入啊
回复 使用道具 举报
赶脚是c吧
回复 使用道具 举报
B不对 损失精度
回复 使用道具 举报
A是对的。两个常量相加减,编译器可以知道结果。如果结果不超过类型,就可以通过。
B不对。b是变量。编译的时候不能确定计算的结果。所以编译的时候会报错。
C对。 相当于 b = (byte)(b+1);q强制类型转化了就可通过了。
D不对把。应该和B一样。
回复 使用道具 举报
* a. byte b = 1 + 1;     
     这个赋值是正确的,因为虽然右边的1默认的是int类型,但是当两个数值确定的时候相加的话只要不超过byte类型范围就可以编译通过。

* b. byte b = 1; b = b + 1;
      这个编译失败,因为在b=b+1中,b是byte类型的,而1是默认的int类型,b+1的值并不明确是否在byte范围内,所以编译会提示损失精度,如果想通过编译可以进行强转b=(int)(b+1),但可能损失精度。

* c. byte b = 1; b = b += 1;   
     这个编译通过,因为在+=赋值运算符中已经包含了强转功能。

* d. byte b = 1; b = ++b;

     这个编译通过,因为b的值确定了然后自增的话还在byte范围内,所以编译通过。



回复 使用道具 举报
a,c,d是正确的
回复 使用道具 举报
acd 正确,有强转为byte类型,b 中 b为变量 int+1 结果为int 不能赋值给byte 大转小 编译失败。
回复 使用道具 举报
看看,我的确不大会
回复 使用道具 举报
围        观
回复 使用道具 举报 0 1
a.cd对的、、、、、、
回复 使用道具 举报
a:对的!b:类型提升了,是错的。c,对的,d:和b一样,
回复 使用道具 举报
学习学习
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马