プロが教えるわが家の防犯対策術!

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

A 回答 (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 …
    • good
    • 0
この回答へのお礼

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

お礼日時:2008/06/28 04:25

★アドバイス


・次のリンクの下のほうをどうぞ。
 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
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!