为什么++i比i++更优更快
转载自https://www.omegaxyz.com/2017/05/20/aboutippandppi/
递增(++)和递减(–-)运算符为对象的加1和减1操作提供了简洁的书写形式。除此之外,这两个运算符还可以用于迭代器,因为很多迭代器本身不支持算术运算,所以此时递增和递减除了简介外还是必需的。
递增和递减运算符有两种形式:前置形式和后置形式,分别对应++i和i++。运算符的前置形式是将对象加1(或减1),然后将求值后的对象作为结果,而后置形式也是将对象加1(或减1),但是求值结果是对象未作出运算的值的副本。
int i=0,j;
j=++i; // i=1,j=1
j=i++; // i=1 , j=0
这两种运算必需作用于左值运算对象,前置形式将运算对象本身作为左值返回,后置形式将运算对象的副本作为右值返回。
在写代码中,如非必需,尽量避免后置形式,因为:前置形式避免了不必要的工作,它把值加1(或减1)后直接返回改变了的运算对象,而后置形式需要将原始值存储下来,以便返回这个未修改的原始值。如果我们不需要未修改的原始值时,那么后置形式的写法就是一种浪费。
对于正数和指针类型来说,编译器可能对这种额外的工作进行了一定的优化,但是对于相对复杂的迭代器来说,这种额外的工作就消耗巨大了。所以养成前置形式的好习惯,不仅不需要担心性能问题,而且写出的代码也符合编程的初衷。
本文来自博客园,作者:泥烟,CSDN同名, 转载请注明原文链接:https://www.cnblogs.com/Knight02/p/14623719.html