- ベストアンサー
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); } }
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
式: a * (a = 2)は左から順に評価されます。 1. まず、最初のaには、5が入っており、 2. 次に、(a = 2)が実行され、aに2が入ります。 その結果、(a = 2)は、2を返し、 3. 最終的に、5 * 2 が計算されます。
その他の回答 (2)
- auty
- ベストアンサー率58% (284/486)
回答No.3
[追加] 人は、5を見たとき「これは計算しなくてもよい。」と判断するかも知れませんが、コンピュータは、愚直に計算をします。
質問者
お礼
追加の回答ありがとうございます。勉強になりました。
- auty
- ベストアンサー率58% (284/486)
回答No.2
・ 5が最初に計算されて、5となり、 ・ 次に (1 + 2)が計算され、3が求められます。 先ほどと同じですね。 そもそも、計算の途中で使っている変数の値を変えるのは紛らわしくなるので、実際にプログラミングするときは出来るだけ避けるほうがよいでしょう。
質問者
お礼
回答ありがとうございます。問題集からの問題なものですみません。 大変参考になりました。
お礼
丁寧な回答大変ありがとうございます。ちなみに、int c = 5 * (1 + 2);などの場合は、括弧が先に計算されて15になると思うのですがそれとは何が違うのでしょうか?補足して頂ければ幸いです。