15
为什么我们有后缀增量?
免责声明:我完全清楚前缀和后缀增量的语义。因此,请不要向我解释它们的工作原理。 阅读有关堆栈溢出的问题,我不禁注意到程序员一遍又一遍地被后缀增量运算符弄糊涂了。由此产生以下问题:是否存在用例后缀增量在代码质量方面真正受益的用例? 让我用一个例子来澄清我的问题。这是以下内容的超级简洁实现strcpy: while (*dst++ = *src++); 但这并不是我书中最能自我记录的代码(它会在理智的编译器上产生两个烦人的警告)。那么以下替代方案有什么问题呢? while (*dst = *src) { ++src; ++dst; } 然后,我们可以摆脱条件中令人困惑的分配,并获得完全无警告的代码: while (*src != '\0') { *dst = *src; ++src; ++dst; } *dst = '\0'; (是的,我知道,src并且dst在这些替代解决方案中将具有不同的结束值,但是由于strcpy在循环之后立即返回,因此在这种情况下无关紧要。) 后缀增加的目的似乎是使代码尽可能简洁。我只是看不到我们应该如何努力。如果这最初是关于性能的,那么今天它仍然有意义吗?