黑马程序员技术交流社区
标题:
类型转换的一些疑惑
[打印本页]
作者:
orsoul
时间:
2015-2-13 01:14
标题:
类型转换的一些疑惑
本帖最后由 orsoul 于 2015-2-15 22:23 编辑
废话不多说,先看代码:
short a = 1, b = 2, c = 3;
a = b + c; //报错
a = a + 1; //报错
a += 1; //通过
a = (int)b; //报错
a = (int)3; //通过
复制代码
为何报错,为何通过?我的用的是JDK1.7
作者:
xyf19881010
时间:
2015-2-13 03:43
第一个,类型自动提升得到了int,然后你赋值给了short,没有强转。下面类似分析
作者:
书生灬流年
时间:
2015-2-13 07:05
补充一下下,+=是一个赋值运算符。
作者:
orsoul
时间:
2015-2-14 21:49
没人回答,自己今天才弄明白
short a = 1, b = 2, c = 3;
a = b + c; //报错,因为编译器会把b、c提升为int后再进行运算。这一设定让我觉得很诡异
a = a + 1; //报错
a += 1; //通过。复合赋值运算符隐含了一个强转的动作,将1转换为short型
a = (int)b; //报错
a = (int)3; //通过。对于常量,只要不超出变量的取值范围,编译器会自行转换
复制代码
作者:
枪杆不如笔杆
时间:
2015-2-14 22:47
是啊,第一个好诡异啊
作者:
fantacyleo
时间:
2015-2-14 23:42
lz可参考我的帖子:
http://bbs.itheima.com/thread-127149-1-1.html
作者:
huangchunwei
时间:
2015-2-15 09:55
第一个看着挺奇怪的。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2