シーケンス ポイントについて読んだ後、i = ++i
未定義であることを知りました。
では、次のコードはどうでしょうか。
int i;
int *p = &i;
int *q = &i;
*p = ++(*q); // that should also be undefined right?
p と q の初期化が何らかの (複雑な) 条件に依存しているとします。そして、それらは上記の場合のように同じオブジェクトを指している可能性があります。何が起こるか?定義されていない場合、どのツールを使用して検出できますか?
編集: 2 つのポインターが同じオブジェクトを指していない場合、C99 制限を使用できますか? それは「厳格」の意味ですか?