谈谈i++和++i

两者区别

  • 赋值顺序不同:++ i 是先加后赋值;i ++ 是先赋值后加;++i和i++都是分两步完成的。
  • 效率不同:后置++执行速度比前置的慢。
  • i++ 不能作为左值,而++i 可以:
int* p1 = &(++i);//正确
// int* p2 = &(i++);//错误
++i = 1;//正确
// i++ = 1;//错误
  • 两者都不是原子操作。

为什么++i的执行效率高呢?

这是由于在重载这两者的时候底层实现代码的不同。来看一下这两者的重载过程:

//重载++i
INT INT::operator++()
{
  	*this = *this+1;
  	return *this;
}
//重载i++
CONST INT INT::operator++(int)
{
	INT oldValue=*this; //保存原来的值
  	*this = *this+1;
  	return oldValue;
}

由此可见,在后置++的过程中,建立了一个临时对象来保存原来的值。因此++i的效率要比i++高一些。

数据结构和算法 文章被收录于专栏

该专栏内容包含常见的数据结构和一些算法知识。若有错误请各位指正。 //里面所有代码均通过vscode调试。

全部评论

相关推荐

友友们,我实在是不太明白,校招的话现在大多也是提前实习,然后转正也是需要考核的,考核通过才能转正,那这跟实习转正有什么区别啊
苦闷的仰泳鲈鱼刷了1...:提前实习,是让你提前熟悉业务的,后续是入职后可以减少试用期的(大部分是包入职的);转正实习,要是hc不够或者其他原因,让你正式offer可能都没有,这个风险很大。 ---个人看法和了解到的。
点赞 评论 收藏
分享
用微笑面对困难:你出于礼貌叫了人一声大姐,大姐很欣慰,她真把你当老弟
点赞 评论 收藏
分享
12-03 15:06
武汉大学 Java
投递拼多多集团-PDD等公司10个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务