1. ホーム
  2. c

[解決済み] ++iとi++の違いは何ですか?

2022-03-22 12:19:55

質問

C言語では ++ii++ のインクリメント・ブロックで使用されるべきものである。 for ループは?

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

  • ++i の値をインクリメントします。 i そして、その増加した値を返す。

     i = 1;
     j = ++i;
     (i is 2, j is 2)
    
    
  • i++ の値をインクリメントします。 i が持っている元の値を返します。 i は、インクリメントされる前に保持されていた。

     i = 1;
     j = i++;
     (i is 2, j is 1)
    
    

の場合 for のループは、どちらを使っても構いません。 ++i で使用されているためか、より一般的なようです。 K&R .

いずれにせよ、ガイドラインに従ってください。 ++i オーバー i++ と言えば、間違いはないでしょう。

の効率性については、いくつかのコメントがあります。 ++ii++ . 学生プロジェクト以外のコンパイラでは、性能に差はありません。 このことは、生成されたコードを見ることで確認できますが、同じものになります。

効率に関する質問は興味深いものです。 C言語でi++と++iの間に性能差はあるのか?

として オンフロント は、C++のオブジェクトの場合は異なることに注意してください。 operator++() は関数であり、コンパイラは中間値を保持するための一時的なオブジェクトの生成を最適化することができないのです。