casting bei short Operation

sisela

Erfahrenes Mitglied
Hallo liebe Java-Freunde,

ich habe folgende Frage, die ich mir nicht erklären kann. Vielleicht kann mir ja einer von Euch ein gute Erklärung dafür geben.

Code:
public class AClass {
  public static void main(String[] args) {
    short s = 6;
    s = (short)(s + 7);
    // Kompilierfehler s = s + 7;
    System.out.println(s);
  }
}

Warum gibt es einen Kompilierfehler, wenn ich den cast zu short weglasse. Die Variable s ist doch vom Typ short und hat damit einen Wertebereich von –32768 bis 32767. Weshalb gibt es dann ein Problem, wenn ich 6 + 7 rechne?
 
Hi,

die 7 ist vom Typ int. für die Operation short + int muss der short implizit nach int gecastet werden. da der Operator + für zwei int aber wiederum einen int zurückgibt, musst Du explizit casten.

Was aber verblüfft, ist dass hier:
short s = 6;

der Compiler hier implizit castet. Noch schlimmer ist folgender Effekt

s = s +(short) 7; // Syntaxfehler
s += (short) 7; // Ok für den Compiler


Das soll jemand verstehen...
 
Hi danke...
das soll einer verstehen. Also der Operator + castet die beiden short Werte implizit zu int. Deswegen hilft es auch nicht nur die 7 zu casten. Aber wann verwendet man denn ein short, wenn der bei Operationen eh zu int gecastet wird

ok, danke erst mal
 
Hi danke...
das soll einer verstehen. Also der Operator + castet die beiden short Werte implizit zu int. Deswegen hilft es auch nicht nur die 7 zu casten. Aber wann verwendet man denn ein short, wenn der bei Operationen eh zu int gecastet wird

ok, danke erst mal

Stimmt! Habe ich gerade getestet. War mir so gar nicht klar.

s = s + s;

führt zu einem Fehler und verlangt einen Cast. Wenn das mal kein Bug ist. Was willst Du denn auch im Zeitalter von Mathematischen Co-Processoren mit nem short ;-)
 
Hi limago,

ansich interessiert mich der short nicht, ich bin nur durch Zufall darauf gestoßen. Komisch ist es aber trotzdem.

Gruß
 
Zurück