A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 吴承烨 中级黑马   /  2013-6-17 21:38  /  2474 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 吴承烨 于 2013-6-18 20:54 编辑

如题,i++和++i哪个运算速度更快.大学老师说,++i比i++速度快,不知道有没有什么依据.
++i直接先加,i++先用在加?所以++i更快?好像不是这么简单.

评分

参与人数 1技术分 +1 收起 理由
苏波 + 1

查看全部评分

4 个回复

倒序浏览
本帖最后由 蔡志涛 于 2013-6-17 22:39 编辑

运算速度我不大清楚,不多++i和i++在表达式中的运算顺序是有区别的,++i是i 自身先加1然后在计算表达式,i++是先运算表达式然后i再加1
回复 使用道具 举报
前置++ 返回当前对象的引用,返回的只是一个地址,很快

后置++ 返回一个原对象的备份,要调用二次拷贝构造函数和二次析构函数,即使使

用RVO优化返回值也需要一次构造和一次析构,所以当类复杂时,开销很大

评分

参与人数 1技术分 +1 收起 理由
苏波 + 1

查看全部评分

回复 使用道具 举报
总体来说研究这个没什么特别的意义,其实从编程的角度来说后者更好,世界上99.9%的情况不需要对这种东西做优化,反而是程序代码越清晰越好,可读性往往大于优化。再者说真要做这种程度的优化的话,往往也用汇编写了
回复 使用道具 举报
重点是在于++i与i++的区别
1.在单独使用的时候i++ 和++i效果相同如 i++; 或++i;一样。
2.要是放在执行语句中时,两个的意义就不一样了如 while(i++<6)意思是先执行后运算,也就是先判断i<6后再i=i+1;相反while(++i<6)意思是先运算后执行,也就是先i=i+1后判断i<6;

评分

参与人数 1技术分 +1 收起 理由
苏波 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马