我发现了一些有关short
算术的问题,但没有一个比较以下三种情况。我想知道为什么这两段代码没问题
(一)
short m = 1;
m += m;
(b)
short m = 1;
m += m + m;
此时
(c)
short m = 1;
m = m + m;
导致错误“类型不匹配:无法从int转换为short”?
最佳答案
这不是警告 - 这是错误。
这里有两个事实在起作用:
- 没有
短+短
运算符; “最小”加法是int + int
,结果类型为int
,并且如果需要,操作数会自动提升为int
(请参阅JLS 15.18.2) - 复合赋值运算符始终具有隐式强制转换(请参阅 JLS 15.26.2)
第二点是为什么前两个操作有效。您实际上已经获得了:
m = (short) (m + m);
还有
m = (short) (m + m + m);
第一点是为什么最后一个操作不起作用 - m + m
的类型是 int
,并且不能分配 int
值到一个short
变量。 (你需要一个 Actor ...)
关于java - 简单的短加法会产生警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29578697/