次のコードでは、「精度が失われる可能性があります: int が必要です: short」というエラーが表示されます。エラーの意味は理解できますが、なぜエラーが発生するのか疑問に思っています。確かに、関数は 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);
}
ありがとう!