• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:カッコの中の計算)

カッコの中の計算について

このQ&Aのポイント
  • カッコの中の計算について詳しく解説します。初歩的な使い方から応用まで、例を交えながら解説します。
  • カッコの中の計算の結果について、具体的な計算手順と結果を解説します。エラーになるかどうかの条件も解説します。
  • カッコ内の計算の動作について、具体的なコードと実行結果を示します。複数の計算が含まれる場合の実行順序も解説します。

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

  • ベストアンサー
  • ok-kaneto
  • ベストアンサー率39% (1798/4531)
回答No.1

コンマ演算子ですね。左から順に評価します。 >printf("%d\n", (x*=4, x+2, x+4) ); では順に (1)x*=4 が実行され、xは16に変わります。 (2)x+2 は評価した結果はx+2の計算結果18です。xの値に変更はありません(代入していないので)。 (3)x+4 xは16なので((2)の影響を受けない)結果として20が返ります。 >printf("%d\n", (x+2, x*=4, x+2, x+4) ); では順に (1)x+2 が評価されます。結果は6です。xの値に変更はありません。 (2)x*=4 xは16に変わります。 (3)x+2 結果は18です。xの値に変更はありません。 (4)x+4 xは16なので((3)の影響を受けない)結果として20が返ります。 コンマ演算子の場合、()があれば左から順に評価され、一番右の値が全体の評価値です。 xに何か代入していない限りxの値に変化はありません。 http://ja.wikipedia.org/wiki/%E3%82%B3%E3%83%B3%E3%83%9E%E6%BC%94%E7%AE%97%E5%AD%90

codingbeginner
質問者

お礼

早速のご回答ありがとうございます! 何やらやはり初歩的なことだった様子。ほぼ独学だったものでこういうことが抜けてしまってるんですね。。

その他の回答 (1)

  • hitomura
  • ベストアンサー率48% (325/664)
回答No.2

これはコンマ演算子(カンマ演算子とも)の計算結果でこうなっています。 http://ja.wikipedia.org/wiki/%E3%82%B3%E3%83%B3%E3%83%9E%E6%BC%94%E7%AE%97%E5%AD%90 コンマ演算子はコンマの右側の値を返します。 たとえば、a, b と書いた場合、全体としての値は b となります。 ただし、a が何らかの関数などの場合はとりあえずその処理を行います。 > (x*=4, x+2) これはまず x*=4 を計算します。これは、x の値を 4 倍し、その結果である 16 という値を返します。 次に、コンマ演算子によってその結果は捨てられ、x+2 の計算結果が全体の答えとなります。 しかし、コンマ演算子が捨てたのは代入演算子が返す値であって、x の値を変更したという事実は生きています。 したがって、 16+2 の結果である 18 が全体の結果になります。 > (x*=4, x+2, x+4) これは上記の x*=4, x+2 のあとに コンマ演算子でつなげて x+4 があります。 x*=4, x+2 の結果は 18 ですが、その値は捨てられます。x+2 は x 自身の値を変えないため x の値は 16 のままです。 そのあと、x+4 の値である 20 が括弧全体の値になります。 > (x+2, x*=4, x+2, x+4) これはまず x+2 が計算されますが、この値はコンマ演算子によって捨てられます。 次に x*=4 が計算されますが、この値もコンマ演算子によって捨てられます。ただし、x への代入は行われています。 三番目に x+2 が計算されますが、この値もコンマ演算子によって捨てられます。 最後に、x+4 の値がコンマ演算子によって採用され、 20 が括弧全体の値になります。

codingbeginner
質問者

お礼

ご回答ありがとうございます! 今回は同様の解説でしたので一番早かった方をベストアンサーにさせて頂きたいと思います。

関連するQ&A