答:a,c,d正确;
4、 以下代码哪个是正确的?为什么?
a. byte b = 1 + 1;
b. byte b = 1; b = b + 1;
c. byte b = 1; b = b += 1;
d. byte b = 1; b = ++b;
选项a:
选项b中,b+1的结果默认转换为int型,int型不能直接转换为byte型,需强制转换。应改为:byte b=1;b=(byte)(b+1);
b=b+1是两次运算,b被提升为int型,运算结果为int,无法赋值给byte类型
选项c中,b+=1是一次运算,包含了一个隐藏的类型转换,相当于 b=(byte)(b+1);
选项d中,b=++b是一次运算,也包含了一个隐藏的类型转换
为啥我感觉第一个也是错的呀,谁能解释一下,水了,基础知识不老, |
|