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