タグ付けされた質問 「postfix」

15
なぜ後置インクリメントがあるのですか?
免責事項:プレフィックスとポストフィックスのインクリメントのセマンティクスを完全に知っています。したがって、それらがどのように機能するかを私に説明しないでください。 スタックオーバーフローに関する質問を読んで、プログラマがpostfix increment演算子に何度も何度も混乱することに気づかずにはいられません。これから、次の疑問が生じます:後置インクリメントがコード品質の面で本当の利点を提供するユースケースはありますか? 例で私の質問を明確にしましょう。以下は、非常に簡潔な実装ですstrcpy。 while (*dst++ = *src++); しかし、それは私の本の中で最も自己文書化されたコードではありません(そして、それは正気のコンパイラで2つの迷惑な警告を生成します)。それでは、次の選択肢の何が問題になっていますか? while (*dst = *src) { ++src; ++dst; } その後、条件内の混乱する割り当てを取り除き、完全に警告のないコードを取得できます。 while (*src != '\0') { *dst = *src; ++src; ++dst; } *dst = '\0'; (はい、私は知っている、srcそしてdstこれらの代替ソリューションで異なる結末値を持つことになりますが、以来strcpy、すぐにループの後に返す、それはこの場合には重要ではありません。) 後置インクリメントの目的は、コードをできるだけ簡潔にすることだと思われます。私はこれが私たちがどのように努力すべきかを単に見逃しています。これがもともとパフォーマンスに関するものであった場合、それは今日でも関連していますか?
55 c++  c  postfix 

11
Postfix Increment演算子を避ける
パフォーマンス上の理由で(特定の場合に)後置インクリメント演算子を避けるべきだと読みました。 しかし、これはコードの可読性に影響しませんか?私の考えでは: for(int i = 0; i < 42; i++); /* i will never equal 42! */ より良く見える: for(int i = 0; i < 42; ++i); /* i will never equal 42! */ しかし、これはおそらく単なる習慣ではありません。確かに、私は多くの使用を見ていません++i。 この場合、パフォーマンスは可読性を犠牲にするのに悪いですか?または私はただ盲目であり、++iより読みやすいですi++か?
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.