Inkompatibler Typenfehler Java zwischen short und int. Unsicher der Ursache

8

Im folgenden Code habe ich einen Fehler "möglicher Verlust der Präzision gefunden: int benötigt: kurz ". Ich verstehe, was der Fehler bedeutet, aber ich frage mich nur, warum ich es verstehe. Sicherlich sollte die Funktion einen kurzen Typ zurückgeben (ich kann nicht sehen, wie könnte Verlust der Genauigkeit sein, der Code sollte eine 16-Bit-Ganzzahl zurückgeben). Kann mir jemand aufklären, warum der folgende Code den Typ int zu benötigen scheint?

%Vor%

Danke!

    
xcvd 14.04.2012, 22:09
quelle

1 Antwort

16

Java-arithmetische Operationen an short geben immer int zurück, um einerseits einen Überlauf zu verhindern und andererseits den zugrunde liegenden JVM-Bytecode wiederzugeben, der nicht zwischen arithmetischen Operationen in int , short oder% unterscheidet Code%. Aber im Grunde ist byte ein (payload[offset - 2] << 8 & 0xff00) und möchte, dass du es zu einem kurzen zurückdrängst.

    
Louis Wasserman 14.04.2012, 22:12
quelle