Ein Kollege von mir fragte mich diese Frage und ich bin irgendwie verwirrt.Int zu Kurz hinzufügen
int i = 123456;
short x = 12;
Die Aussage
x += i;
Fein Kompiliert jedoch
x = x + i;
nicht
Was Java hier tut?
Ein Kollege von mir fragte mich diese Frage und ich bin irgendwie verwirrt.Int zu Kurz hinzufügen
int i = 123456;
short x = 12;
Die Aussage
x += i;
Fein Kompiliert jedoch
x = x + i;
nicht
Was Java hier tut?
int i = 123456;
short x = 12;
x += i;
ist eigentlich
int i = 123456;
short x = 12;
x = (short)(x + i);
Während x = x + i
einfach x = x + i
ist. Es wird nicht automatisch als short
umgewandelt und verursacht daher den Fehler (x + i
ist vom Typ int
).
Verbindung Zuweisungsausdruck von der Form
E1 op= E2
entsprichtE1 = (T)((E1) op (E2))
, wobei die Art derT
E1
ist, mit der Ausnahme, dassE1
nur einmal ausgewertet wird.
Nummern werden wie int
behandelt, es sei denn, Sie werden anders angegeben. Wenn Sie also in der zweiten Anweisung eine Literalnummer anstelle einer Variablen verwenden, wird sie nicht automatisch in den entsprechenden Typ umgewandelt.
x = x + (short)1;
... sollte funktionieren.
Ich habe falsche Gleichung geschrieben. Ich habe meine Frage aktualisiert. Sieh 'x = x + i'. –
Ok, warum nicht x = x + x; Arbeit? Das Problem liegt nicht auf der Zahl 1, sondern auf dem Operator +, der einen int zurückgibt. – lleite
Der +
Betreiber von integralen Typen (int, short, char und Byte) gibt immer einen int als Ergebnis.
Sie, dass mit diesem Code sehen:
//char x = 0;
//short x = 0;
//byte x = 0;
int x = 0;
x = x + x;
Es wird nicht kompiliert, es sei denn x
ein int
ist.
Sie versuchen Int jedoch zu kurz hinzuzufügen. a = b! = b = a –
Sie fügen tatsächlich einen int zu einem kurzen –
hinzu Für Interesse versuchen Sie dieses 'char ch = '0'; ch * = 1.2; 'jetzt ch ist' '8'';) –