- ベストアンサー
c言語の簡単な演算なのですがわかりません。
int a = 10, b = 5, c = 3; b = ++a - c--; print("%d\n", b); b の結果が がなんで 8 になるのでしょうか? aのインクリで11 cのデクリで2 で9のような気がしましたが違いますね。 計算の順番をわすれてしまいました。 小学生レベルといわずよろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
左にある++や--は加算や減算を先にします。 右にある++や--は加算や減算を後にします。 なので、 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); とやってみれば分かるはず。
その他の回答 (2)
- TaketsuruOishi
- ベストアンサー率43% (16/37)
回答No.3
++と--は、変数の前にあるか、後にあるかで、効果が違います。 前置インクリメント、後置インクリメントなどの言葉で調べてみてください。 ++aは、aを評価する前にインクリメントされます。 a++は、aを評価した後にインクリメントされます。 ですので、先の例では、 aが11 cが3で、計算結果は8です。cのデクリメントはそののちに効果が現れます。
質問者
お礼
よくわかりました。よく思い出しました。ありがとうございます。
- m-take0220
- ベストアンサー率60% (477/782)
回答No.1
--c と c-- の違いを把握しましょう。 --cはcの値を使用する前にデクリメントします。 c--はcの値を使用した後でデクリメントします。
質問者
お礼
把握していたつもりだったのですが、久しぶりなので駄目でした。 ありがとうございます。
お礼
全部クリアになりました。ありがとうございます。