++i和i++的区别
来源:互联网 发布:通联数据网站 编辑:程序博客网 时间:2024/05/23 05:08
大家都应该知道i++和++i的区别,前者是先使用i的值,然后再增加1,而后者是先增加1然后再使用i的值。
但是i++和++i那个更好呢? 我们实现角度来看:前者是将i值加1后赋给i,然后返回i本身;而后者是先用个临时变量存储i值,然后将i值加1赋给i,然后返回临时变量的值。
内置数据类型他们的效率差不多,看他们的汇编代码就知道,我看的汇编代码是VC的,其他编译器不知道,还是得要看编译器优化把。
而对于对象的++i和i++的效率,那明显就是++i 要快,从实现角度我们看就是++i快,然后我们从实际代码出发:
#include<iostream>using namespace std;class I{public:I();~I();I(const I &i);I& operator=(const I &i);I& operator++();I operator++(int);private:int m_i;};I::I():m_i(0){cout << "con" << endl;}I::~I(){cout << "dector" << endl;}I::I(const I& iObj):m_i(iObj.m_i){cout << "copy" << endl;}I& I::operator++(){cout << "increament" << endl;++m_i;return *this;}I& I::operator=(const I &iobj){cout << "assign" << endl; m_i=obj.m_i;return *this;}I I::operator++(int){I old = *this;++(*this);return old;}int main(void){I i;cout << "++i" << endl;++i;cout << endl;cout << "i++" << endl;i++;cout << endl;return 0;}
结果是:
0 0
- i++和++i的区别
- "i++"和"++i"的区别
- ++i 和 i++ 的区别
- i++和++i的区别
- i++和++i的区别
- i++和++i的区别
- i++和++i的区别
- i++和++i的区别
- i++和++i的区别
- ++i和i++的区别
- i++和++i的区别
- ++i和i++的区别
- i++和++i的区别
- i++和++i的区别
- ++i和i++的区别
- i++和++i的区别
- i++和++i的区别
- i++和++i的区别
- File.separator & File.pathSeparator的区别
- oracle 高水位线 high water mark
- ArrayList、LinkedList和HashSet、TreeSet以及HashMap、TreeMap是如何实现存储的?
- 编辑文章 - 博客频道 - CSDN.NET
- 我的android(第二十二天)
- ++i和i++的区别
- Linux单实例进程(转)
- 二分查找最后一个小于等于和第一个大于等于某对象的数组元素位置
- 分数类的雏形
- Harris角点检测
- Python基础知识1——py /pyc/pyo
- notepad+无法输入中文解决办法
- struts2 类型转换
- ZOJ Monthly, January 2014(2014省赛练习)