接尾辞と接頭辞の増分/減分がどのように機能するかをよく理解しています。しかし、私の質問は、forループで、どちらがより効率的またはより高速で、どちらがより一般的に使用されているのか、そしてその理由は何ですか?
プレフィックス?
for(i = 0; i < 3; ++i) {...}
または接尾辞?
for(i = 0; i < 3; i++) {...}
接尾辞と接頭辞の増分/減分がどのように機能するかをよく理解しています。しかし、私の質問は、forループで、どちらがより効率的またはより高速で、どちらがより一般的に使用されているのか、そしてその理由は何ですか?
プレフィックス?
for(i = 0; i < 3; ++i) {...}
または接尾辞?
for(i = 0; i < 3; i++) {...}
このint
コンテキストでのsの場合、違いはありません。コンパイラは、ほとんどの最適化レベルで同じコードを出力します(最適化がない場合でも、思い切って言います)。
C ++クラスインスタンスのような他のコンテキストでは、いくつかの違いがあります。
どちらも機能しますが、この場合、一方が他方よりも効率的または高速ではありません。++ 1を使用するのは一般的です。おそらく、それがK&Rやその他の影響力のある本で使用されていたためです。
この特定のケースでは、実際に他より効率的なものはありません。++i
イテレータオブジェクトのような他の種類の反復ではより効率的であるため、より一般的に使用されることを期待します。
私の意見では、forループでプレフィックスまたはポストフィックスを選択するかどうかは、言語自体に依存します。C ++では、プレフィックスはより効率的で一貫性があります。プレフィックスタイプでは、コンパイラはインクリメントされていない値をコピーする必要がないためです。さらに、値が整数であってはなりません。値がオブジェクトである場合、このプレフィックスタイプの方が強力です。