• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:初心者です、教えてください)

初心者の疑問:intとlongの計算について

このQ&Aのポイント
  • 初心者の方が「わかりやすいjava」を使って独習していて、intとlongの計算につまづいています。
  • 質問のコードでは、int型の変数「n」に5を代入し、long型の変数「a」に10を代入しています。
  • ただし、int型とlong型の演算では、int型の値がlong型に自動変換されてから演算が行われます。

質問者が選んだベストアンサー

  • ベストアンサー
  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.1

http://okwave.jp/qa/q6373223.html ちょうど関連した話が最近ありました こういう式は決められた順番に実行されます。 この式は 1) n+a を計算する 2) 結果を mに代入する の順番で実行されます。 まずは1) nはintの5,aはlongの10なので、 http://www.y-adagio.com/public/standards/tr_javalang2/conversions.doc.html#170983 に従って「5L + 10L と自動変換され」、15Lとなります。 この時点では何の問題もありません。 m はまったく関係ありません。 つぎは2) ここで m = 15L となるのでエラーになります。 ここで比較されているは、 nの5でもaの10Lでもなく、15Lです。 > こういう細かい疑問はいちいち気にしないで飛ばした方がいいでしょうか? ケースにもよりますが 計算の時の(暗黙の)ルールというのはプログラミングの上で結構重要です。 納得いくまで確認するのがよいと思います。 余談ですが。 言語によっては、あなたが最初に思ったように 型が違うと演算できない(明示的に変換が必要)だったり、逆にそういう変換ルールがまったくなかったり、といろいろです。 整数÷整数がどうなるか、といったのも言語によって違いがあります。(1/2が 0.5になるもの、0になるもの等)

loolo
質問者

お礼

とてもわかりやすい回答をありがとうございました。 ほかの言語の話も参考になりました。 >ケースにもよりますが 計算の時の(暗黙の)ルールというのはプログラミングの上で結構重要です。 納得いくまで確認するのがよいと思います。 ありがとうございます。そうします。

関連するQ&A

専門家に質問してみよう