前置递增运算符和后置递增运算符的区别

递增和递减运算符有两种形式:前置版本和后置版本。

前置版本首先将运算对象加 1(或减 1),然后把改变后的对象作为求值结果。后置版本也将运算对象加 1(或减 1),但是求值结果是运算对象改变之前那个值的副本

这两种运算符必须作用于左值运算对象。前置版本将对象本身作为左值返回,后置版本则将对象原始值的副本作为右值返回。

我们的建议是,除非必须,否则不用递增(递减)运算符的后置版本。前置版本的递增运算符避免了不必要的工作,它把值加 1 后直接返回改变了的运算对象。与之相比,后置版本需要将原始值存储下来以便于返回这个未修改的内容。如果我们不需要修改之前的值,那么后置版本的操作就是一种浪费。

对于整数和指针类型来说,编译器可能对这种额外的工作进行了一定的优化;但是对于相对复杂的迭代器类型来说,这种额外的工作就消耗巨大了。建议养成使用前置版本的习惯,这样不仅不需要担心性能问题,而且更重要的是写出的代码会更符合编程人员的初衷。

posted @ 2021-02-01 19:57  DearLeslie  阅读(708)  评论(0编辑  收藏  举报