5

このコードを考えてみましょう:

byte b=1;
long l=1000;
b += l;

b+=lはとして評価されb = b+l(b+l)partは整数を与えるため、最後のステートメントには明示的なキャストが必要になると思い ます。明示的なキャストなしで整数をバイトに割り当てることはできませんか?

4

1 に答える 1

17

まず、 ...ではなくb+lを与えます。longint

...しかし、複合代入演算子には他の動作があります。JLSセクション15.26.2に従って:

E1 op= E2 の形式の複合代入式は、E1 = (T) ((E1) op (E2)) と同等です。ここで、T は E1 の型ですが、E1 は 1 回だけ評価されます。

へのキャストに注意してくださいT

于 2012-11-28T11:01:31.947 に答える