++i
C では、と を使用することの違いは何ですか。また、ループi++
の増分ブロックではどちらを使用する必要がありますか。for
ベストアンサー1
++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++
ば間違いはありません。
++i
との効率性に関して、いくつかコメントがありますi++
。学生プロジェクト以外のコンパイラでは、パフォーマンスの違いはありません。生成されたコードを見ると、同じものになっていることがわかります。
効率性の問題は興味深いです... これが私の答えの試みです:C の i++ と ++i の間にパフォーマンスの違いはありますか?
としてオンフレンド注記: C++ オブジェクトの場合は異なります。operator++()
関数であり、コンパイラは中間値を保持するための一時オブジェクトの作成を最適化する必要がないことを認識できないためです。