変数とデータ型応用問題

以下のコードを実行した場合、最後に出力される値はどれですか? ```java short s = 32000; s += 40000; System.out.println(s); ```

A.72000
✗ short型の最大値は32767であるため、32000+40000=72000はshort型の範囲を超えます。単純な足し算結果ではなく、オーバーフロー後の値になります。
B.6464← 正解
✓ 正解です。複合代入演算子(+=)には暗黙のキャストが含まれており、s = (short)(s + 40000) と同等です。32000 + 40000 = 72000 をshort(16ビット符号付き)に変換すると、72000 - 65536 = 6464 となります。
C.40000
✗ 右辺の値40000だけが出力されるのではなく、左辺の32000と加算されてからオーバーフロー処理が行われます。
D.コンパイルエラーが発生する
✗ 複合代入演算子(+=)の使用は正しい文法です。short型へのオーバーフローが発生してもコンパイルエラーにはなりません。

Oracle Certified Java Programmer, Bronze SE の問題一覧