Question :
char x = 'a';
x += 3; // ok
x = x + 3; // compile time error
Question :
char x = 'a';
x += 3; // ok
x = x + 3; // compile time error
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).
© 2022 - 2024 — McMap. All rights reserved.
x *= 1.1
which also compiles, x becomesj
;) – Casabonne