Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
この行はC++標準でカバーされていないと主張する人がいました:
int i(1); array_of_int[i] = i++;
その人はそれが割り当てられると言ったが、それがにあるのか、それともビジュアルスタジオとほとんどのコンパイラがにあるの1かはわからない。array_of_int[1]array_of_int[2]array_of_int[1]
1
array_of_int[1]
array_of_int[2]
彼は正しいですか?
これは未定義の動作です。文字通り、いかなる行動も合法です。
そのコード行を禁止する箇所は次のとおりです。
前のシーケンスポイントと次のシーケンスポイントの間で、オブジェクトは、式の評価によって、格納されている値を最大で1回変更する必要があります。さらに、前の値は、保存される値を決定するためにのみ読み取られるものとします。
a[i]との間にシーケンスポイントはなくi++、read to iinは、によってa[i]格納されている値を決定するためのものではありません。ii++
a[i]
i++
i