为什么++i比i++更优更快

递增(++)和递减(--)运算符为对象的加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)后直接返回改变了的运算对象,而后置形式需要将原始值存储下来,以便返回这个未修改的原始值。如果我们不需要未修改的原始值时,那么后置形式的写法就是一种浪费。

      对于正数和指针类型来说,编译器可能对这种额外的工作进行了一定的优化,但是对于相对复杂的迭代器来说,这种额外的工作就消耗巨大了。所以养成前置形式的好习惯,不仅不需要担心性能问题,而且写出的代码也符合编程的初衷。

一条评论

留下评论

您的电子邮箱地址不会被公开。 必填项已用 * 标注