1.26、++i是左值还是右值,++i和i++哪个效率更高?

++i 是左值,i++ 是右值。

具体来说,++i(前置自增)先将变量加1,然后返回该变量本身的引用,因此它是一个左值,可以继续作为赋值的左边使用;而 i++(后置自增)先保存变量当前值的临时副本,再将变量加1,最后返回这个临时副本,临时副本没有名字,属于右值,不能作为赋值左边。

关于效率:

  • • 对于内置类型(如 int),现代编译器会优化,++i 和 i++ 在单独使用时效率几乎没有差别。
  • • 对于自定义类型(类对象),++i 效率更高,因为 i++ 需要创建一个临时对象保存原值,涉及拷贝构造,开销较大;而 ++i 直接修改对象并返回引用,避免了临时对象的构造和析构。
    本文首发于【讳疾忌医-note】公众号,未经授权,不得转载。
    (加入我的知识星球,免费获取账号,解锁所有文章。)
阅读剩余
THE END