関連する質問:代入演算子がシーケンス ポイントでない正当な理由はありますか?
comp.lang.c FAQから、以下のプログラムは未定義であると推測できます。奇妙なことf
に、引数の計算と への制御の転送の間のシーケンス ポイントとしてへの呼び出しのみが言及されていf
ます。f
から呼び出し元の式への制御の転送は、シーケンス ポイントとしてリストされていません。
int f(void) { i++; return 42; }
i = f();
それは本当に未定義ですか?
多くの質問に追加する最後のメモとして、静的分析のコンテキストでこれに興味があります。私はこれを自分で書いているわけではありません。他の人が書いたプログラムで警告する必要があるかどうかを知りたいだけです。