• ベストアンサー

c言語の簡単な演算なのですがわかりません。

int a = 10, b = 5, c = 3; b = ++a - c--; print("%d\n", b); b の結果が がなんで 8 になるのでしょうか? aのインクリで11 cのデクリで2 で9のような気がしましたが違いますね。 計算の順番をわすれてしまいました。 小学生レベルといわずよろしくお願いします。

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

  • ベストアンサー
  • SaKaKashi
  • ベストアンサー率24% (755/3136)
回答No.2

左にある++や--は加算や減算を先にします。 右にある++や--は加算や減算を後にします。 なので、 b = ++a - c--; は、aが10、cが3の場合、 b = 10+1 - 3 で8 このあと、cは-1されて2。 print("%d %d %d \n", a,b,c); b = ++a - c--; print("%d %d %d \n", a,b,c); とやってみれば分かるはず。

denza
質問者

お礼

全部クリアになりました。ありがとうございます。

その他の回答 (2)

回答No.3

++と--は、変数の前にあるか、後にあるかで、効果が違います。 前置インクリメント、後置インクリメントなどの言葉で調べてみてください。 ++aは、aを評価する前にインクリメントされます。 a++は、aを評価した後にインクリメントされます。 ですので、先の例では、 aが11 cが3で、計算結果は8です。cのデクリメントはそののちに効果が現れます。

denza
質問者

お礼

よくわかりました。よく思い出しました。ありがとうございます。

回答No.1

--c と c-- の違いを把握しましょう。 --cはcの値を使用する前にデクリメントします。 c--はcの値を使用した後でデクリメントします。

denza
質問者

お礼

把握していたつもりだったのですが、久しぶりなので駄目でした。 ありがとうございます。

関連するQ&A