• ベストアンサー

Javaの計算について

Java初心者です。以下の問題で、c = 10になるのか判りません。括弧が先に計算されるのではないのでしょうか?どなたか解説していただけませんでしょうか? public class M{ public static void main(String[] args){ int a = 5; int b = (a = 2) * a; a = 5; int c = a * (a = 2); System.out.println("b = " + b + " c = " + c); } }

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

  • ベストアンサー
  • auty
  • ベストアンサー率58% (284/486)
回答No.1

式: a * (a = 2)は左から順に評価されます。 1. まず、最初のaには、5が入っており、 2. 次に、(a = 2)が実行され、aに2が入ります。   その結果、(a = 2)は、2を返し、 3. 最終的に、5 * 2 が計算されます。

tachipon
質問者

お礼

丁寧な回答大変ありがとうございます。ちなみに、int c = 5 * (1 + 2);などの場合は、括弧が先に計算されて15になると思うのですがそれとは何が違うのでしょうか?補足して頂ければ幸いです。

その他の回答 (2)

  • auty
  • ベストアンサー率58% (284/486)
回答No.3

[追加] 人は、5を見たとき「これは計算しなくてもよい。」と判断するかも知れませんが、コンピュータは、愚直に計算をします。

tachipon
質問者

お礼

追加の回答ありがとうございます。勉強になりました。

  • auty
  • ベストアンサー率58% (284/486)
回答No.2

・ 5が最初に計算されて、5となり、 ・ 次に (1 + 2)が計算され、3が求められます。 先ほどと同じですね。 そもそも、計算の途中で使っている変数の値を変えるのは紛らわしくなるので、実際にプログラミングするときは出来るだけ避けるほうがよいでしょう。

tachipon
質問者

お礼

回答ありがとうございます。問題集からの問題なものですみません。 大変参考になりました。

関連するQ&A