2

私はCが初めてです。そのような基本的な質問で申し訳ありません。

int ArrayIndex = 0;
int intArray[ArrayIndex++] = somevalue;

私は、後置インクリメント/デクリメントが正確にいつ実行されるかは、答えるのが簡単な質問ではないという本を読みました。この本はまたsequence points、質問に答えるために呼ばれる概念について漠然と述べています。値の更新 [インクリメント/デクリメント] は、前のシーケンス ポイントと次のシーケンス ポイントの間で行われます。このようなシーケンス ポイントの例は、式ステートメントの終わりです。

私の質問は、some valueすべてのコンパイラ/プラットフォームで、上記のコード スニペットは常に配列インデックス 0 に割り当て、ArrayIndex をインクリメントするのでしょうか? ArrayIndex が最初にインクリメントされ、次に intArry[1]; に値が割り当てられる可能性はありますか?

誰か光を当てることができますか?

4

2 に答える 2

2

私の質問は、上記のコード スニペットは、すべてのコンパイラ/プラットフォームで、常に配列インデックス ゼロに何らかの値を割り当て、ArrayIndex をインクリメントするのでしょうか?

答え: はい

ArrayIndex が最初にインクリメントされ、次に intArry[1]; に値が割り当てられる可能性はありますか?

答え: 使用する場合

int intArray[++ArrayIndex] = somevalue;

これは増加ArrayIndexし、配列インデックス 1 に値を割り当てます

于 2013-04-15T10:17:20.527 に答える
2

++ArrayIndex の新しい値にインクリメント ArrayIndexおよび評価されますArrayIndex

ArrayIndex++ の古い値に評価され、 がArrayIndexインクリメントされますArrayIndex

これはあなたの質問に答えるはずです。(ヒント: 答えはイエスです)。

于 2013-04-15T10:19:43.450 に答える