変数とデータ型応用問題
以下のコードを実行した場合、変数resultに格納される値の型はどのようになり、出力される値はどれですか? ```java long result = 1000000 * 1000000; System.out.println(result); ```
A.1000000000000(long型として正しく計算される)
✗ 1000000は整数リテラルであり、int型と見なされます。int型同士の乗算はint型で行われ、1000000*1000000はint型の範囲を超えてオーバーフローします。
B.-727379968(整数オーバーフロー後の値)← 正解
✓ 正解です。両辺のオペランドがint型のため、int型で乗算が実行されます。結果はオーバーフロー後の値となり、その後long型に変換されます。
C.1E12(scientific notation)
✗ Javaの標準出力ではscientific notationで自動的に表示されることはありません。この場合はオーバーフロー値が整数で出力されます。
D.コンパイルエラーが発生する
✗ long型への代入は正しい文法です。左辺がlong型であってもコンパイルエラーにはなりませんが、演算がint型で行われる点に注意が必要です。