8

質問 :

char x = 'a'; 
x += 3; // ok  
x = x + 3; // compile time error
4

1 に答える 1

29

x += 3は と同等であるため、x = (char)(x+3)デフォルトでx + 3は がint動作するため、int を char に代入してキャストする必要があります。

からJLS specification : 15.26.2

E1 op= E2 の形式の複合代入式は、E1 = (T)((E1) op (E2)) と同等です。ここで、T は E1 の型ですが、E1 は 1 回だけ評価されます。型 T への暗黙のキャストは、恒等変換 (?.1.1) または縮小プリミティブ変換 (?.1.3) のいずれかであることに注意してください。

于 2011-07-27T13:17:06.573 に答える