1.26、++i是左值还是右值,++i和i++哪个效率更高?
++i
是左值,i++
是右值。
++i
(前置自增)先将变量加1,然后返回该变量本身的引用,因此它是一个左值,可以继续作为赋值的左边使用;而 i++
(后置自增)先保存变量当前值的临时副本,再将变量加1,最后返回这个临时副本,临时副本没有名字,属于右值,不能作为赋值左边。
关于效率:
- • 对于内置类型(如
int
),现代编译器会优化,++i
和i++
在单独使用时效率几乎没有差别。 - • 对于自定义类型(类对象),
++i
效率更高,因为i++
需要创建一个临时对象保存原值,涉及拷贝构造,开销较大;而++i
直接修改对象并返回引用,避免了临时对象的构造和析构。
本文首发于【讳疾忌医-note】公众号,未经授权,不得转载。
(加入我的知识星球,免费获取账号,解锁所有文章。)
阅读剩余
版权声明:
作者:讳疾忌医-note
链接:https://www.1217zy.vip/archives/1258
文章版权归作者所有,未经允许请勿转载。
THE END