1. ホーム
  2. c++

[解決済み】forループ内のポストインクリメントとプリインクリメントが同じ出力をする【重複】。

2022-05-29 06:42:50

質問

以下のforループは、一方がポストインクリメント、他方がプリインクリメントを使用していても、同じ結果になります。

以下はそのコードです。

for(i=0; i<5; i++) {
    printf("%d", i);
}

for(i=0; i<5; ++i) {
    printf("%d", i);
}

私は両方の'for'ループのために同じ出力を得る。 私は何かを見逃しているのでしょうか?

どのように解決するのですか?

評価後 i++ または ++i の新しい値は i の新しい値はどちらも同じになる。 プリインクリメントとポストインクリメントの違いは、式の評価結果そのものにあります。

++i インクリメント i の新しい値として評価されます。 i .

i++ の古い値として評価されます。 i と評価され、インクリメントされます。 i .

forループでこれが問題にならないのは、制御の流れがおおよそこのようになるからです。

  1. 条件をテストする
  2. 偽の場合、終了する
  3. trueの場合、本体を実行する
  4. インクリメントステップを実行

(1)と(4)は切り離されているため、プリインクリメント、ポストインクリメントのどちらを使ってもよい。