Sunday, April 28, 2019

java - Adding int to short





A colleague of mine asked this question to me and I am kind of confused.



int i = 123456;
short x = 12;


The statement



x += i;



Compiles fine however



x = x + i;


doesn't



What is Java doing here?


Answer




int i = 123456;
short x = 12;
x += i;


is actually



int i = 123456;
short x = 12;
x = (short)(x + i);



Whereas x = x + i is simply x = x + i. It does not automatically cast as a short and hence causes the error (x + i is of type int).







A compound assignment expression of the form E1 op= E2 is equivalent to E1 = (T)((E1) op (E2)), where T is the type of E1, except that E1 is evaluated only once.



- JLS §15.26.2




No comments:

Post a Comment

plot explanation - Why did Peaches' mom hang on the tree? - Movies & TV

In the middle of the movie Ice Age: Continental Drift Peaches' mom asked Peaches to go to sleep. Then, she hung on the tree. This parti...