在下面的代码中,我有一个错误“发现精度可能丢失:需要 int:short”。我理解错误的含义,但我只是想知道为什么我会得到它。当然,该函数应该返回一种短类型(我看不出有什么精度损失,代码应该返回一个 16 位整数)。谁能帮我弄清楚为什么下面的代码似乎需要 int 类型?
static short a() {
short[] payload = {
100, 200, 300,
400, 500, 600,
700, 800, 900, 1000
};
short offset = 2;
return (payload[offset - 2] << 8 & 0xff00) + (payload[offset - 1] & 0xff);
}
谢谢!