0

ポストインクリメント演算子がインクリメントに影響を与えるのはいつですか? 私は2つの意見に出くわしました:

1) http://gd.tuwien.ac.at/languages/c/programming-bbrown/c_015.htmから:

POST は、代入操作の後に操作を実行することを意味します。

2)家に近づくと、SO(C ++ではありますが)に関する回答は次のように述べています。

...式の終わり(次のシーケンスポイント)までインクリメントを遅らせます。

ポストインクリメント操作もそうです...

A) シーケンスポイントに到達するまで待つか、

B) 代入演算子をポストするか、

C) シーケンス ポイントの前に発生しますか?

4

2 に答える 2

5

正しい解釈は C です。インクリメントは、次のシーケンス ポイントの前に発生します。具体的には、C 標準 (C99、6.5.2.4、2) では次のように述べられています。

オペランドの格納された値を更新する副作用は、前のシーケンス ポイントと次のシーケンス ポイントの間で発生します。

完全な段落の引用:

後置 ++ 演算子の結果は、オペランドの値です。結果が得られた後、オペランドの値がインクリメントされます。(つまり、適切な型の値 1 がそれ​​に追加されます。) 制約、型、変換、およびポインターに対する操作の影響については、加算演算子と複合代入の説明を参照してください。オペランドの格納された値を更新する副作用は、前のシーケンス ポイントと次のシーケンス ポイントの間で発生します。

于 2011-02-01T17:13:08.140 に答える
0

ポスト インクリメント操作は、インクリメント演算子が使用されている式に関係なく、常に次のシーケンス ポイントの前に発生します。詳細については、このリンクを参照してくださいhttp://en.wikipedia.org/wiki/Sequence_point

于 2012-03-06T05:49:32.123 に答える