What is the difference of x=x+3 and x+=3? Why one needs type cast and the other does not?
Asked Answered
C

1

8

Question :

char x = 'a'; 
x += 3; // ok  
x = x + 3; // compile time error
Carnegie answered 27/7, 2011 at 13:15 Comment(1)
try x *= 1.1 which also compiles, x becomes j ;)Casabonne
E
29

Because x += 3 is equivalent to x = (char)(x+3), while x + 3 is default to int operation, assign an int to char must cast.

From the JLS specification : 15.26.2 ,

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. Note that the implied cast to type T may be either an identity conversion (?.1.1) or a narrowing primitive conversion (?.1.3).

External answered 27/7, 2011 at 13:17 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.