• ベストアンサー

副作用、副作用完了点とは

C言語には"副作用 副作用完了点"という言葉がありますが、どのような事を指すのでしょうか。++a a++などのインクリメント演算子ではどの時点が副作用完了点なのでしょうか。宜しく願います。

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

  • ベストアンサー
  • MrBan
  • ベストアンサー率53% (331/615)
回答No.2

JIS X3010でいう副作用と副作用完了点は、原文(ISO/IEC9899)では、 side effectとsequence pointと呼ばれます。 # 個人的には原文の方が内容を示しているように思ってます。 言語仕様として、side effectsが決定することを保証するタイミングがsequence pointです。 ここでは、++aによりaの値がインクリメントするのがside effectで、 その結果が確定するのが、sequence pointです。 sequence pointの条件はいろいろありますので、本当に興味があれば言語仕様を読んでみてください。 とりあえず、++aやa++だけでは、sequence pointはありません。 ++a;なら、;の時点がsequence pointです。 参考URLが、JIS X3010:1999です。(※閲覧しかできません) (原文の方は購入していただかないと参照できないので日本版です) 例えば6.5章に式についての記載があります。

参考URL:
http://www.jisc.go.jp/app/pager?%23jps.JPSH0090D:JPSO0020:/JPS/JPSO0090.jsp=&RKKNP_vJISJISNO=X3010
PHYOPHYO
質問者

お礼

おぼろげながらわかったような気がしました。有難うございました。

その他の回答 (1)

  • Oh-Orange
  • ベストアンサー率63% (854/1345)
回答No.1

★アドバイス ・次のリンクの下のほうをどうぞ。  http://www.st.rim.or.jp/~phinloda/cqa/cqa7.html→『初級C言語Q&A(7)』  場所は『Q 【&&や||と副作用完了点】』です。

参考URL:
http://www.st.rim.or.jp/~phinloda/cqa/cqa7.html

関連するQ&A

専門家に質問してみよう