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!
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.
Tags und Links java bit-manipulation precision