【发布时间】:2014-01-17 12:37:59
【问题描述】:
我有这样的代码
short a = 1;
short b = 2 ;
short c = a + b; // dosen't compile
编译失败的原因是什么? x + x 总是产生Integer 或更大 Number,但为什么呢?
【问题讨论】:
-
因为语言设计者是这样决定的。您想要 JLS 的报价吗?
-
听说JLS中没有指定这个。
-
重要的一点是:一个 int 不能被转换成一个 short。 a 和 b 相加将产生 int。那么,由于它不能被转换成short会抛出编译错误。
标签: java compiler-errors jvm language-specifications