7

私は以下に示す形式の式を持っています:-

while (count)
{
...
...

    index = ((count == 20)? 0 : index++);
...
...
}

三項演算子はCのシーケンスポイントですが、シーケンスポイントはテスト部分で終わると思います。

この理解は正しいですか?このステートメントは未定義の動作につながりますか?

4

1 に答える 1

12

右。条件の評価後にシーケンスポイントがありますが、次のシーケンスポイントはステートメントを終了するセミコロンです。したがって、いつでもcount != 20、未定義の動作があります

index = index++;

indexは、シーケンスポイントを介さずに2回変更されるためです。

于 2012-06-12T11:13:19.907 に答える