为什么自增(increment)运算符的 前置(prefix) 比 后置(postfix) 效率高?
来源:互联网 发布:js怎么调用java方法 编辑:程序博客网 时间:2024/06/05 11:29
先看一段代码:
- #include <iostream>
- using namespace std;
- int main()
- {
- int num1 = 1, num2 = 1;
- int sum1, sum2;
- sum1 = ++num1;
- sum2 = num2++;
- cout << "num1 = " << num1 << endl
- << "num2 = " << num2 << endl
- << "Sum1 = " << sum1 << endl
- << "Sum2 = " << sum2 << endl;
- return 0;
- }
输出结果为:
num1 = 2
num2 = 2
sum1 = 2
sum2 = 1
原理: 前置运算符,先将自身递增,然后返回自身;
后置运算法,先创建自身的一个副本,而后自身递增,然后返回副本。
正如上例代码:
sum1 = ++num1; --> num1先自增本身,值变为2,再返回本身,sum1即被赋值为2;
此时,num1 = 2, sum1 = 2。
sum2 = num2++; -->num2先创建自身副本(假设为tmp),tmp = num2,然后num2自增,
值变为2,返回副本tmp,sum2即被赋值为1;
此时,num2 = 2, sum2 = 1。
再来看一看运算符的重载,更加一目了然。
- class A
- {
- public:
- A& operator++(); //前置版本(prefix version)
- A operator++(int); //后置版本(postfix version)
- private:
- int num;
- }
- inline A& A::
- operator++()
- {
- num += 1;
- return *this;
- }
- inline A A::
- operator++( int )
- {
- A tmp = *this; //创建副本
- num += 1; //自身增加
- return tmp; //返回副本
- }
- 为什么自增(increment)运算符的 前置(prefix) 比 后置(postfix) 效率高?
- 为什么自增(increment)运算符的 前置(prefix) 比 后置(postfix) 效率高?
- 为什么前置++比后置++的效率高
- 6. 区别increment/decrement操作符的前置(prefix)和后置(postfix)形式
- 区别increment/decrement操作符的前置(prefix)和后置(postfix)形式
- 区别increment/decrement操作符的前置(prefix)和后置(postfix)形式
- 前置++为什么比后置++效率高
- 前置++为什么比后置++效率高
- 前置++为什么比后置++效率高
- 前置++为什么比后置++效率高
- 读书笔记: More Effective ++ 操作符 条款6,区别increment/decrement操作符的前置(prefix)和后置(postfix)的形式
- 嵌入式学习第四天(强制类型转换,运算符的优先级,为什么后置 I++的优先级比 前置++I高)
- 前置++为什么比后置++效率更高?
- 自增运算符前置与后置区别(i++,++i)
- C++中自增和增减运算符的前置形式和后置形式
- 重载前置,后置(自增运算符 ++ 和自减运算符 --)
- 重载前置,后置(自增运算符 ++ 和自减运算符 --)
- 重载前置,后置(自增运算符 ++ 和自减运算符 --)
- 学会转换生活态度
- 学习,事业
- 【转】如何才能做到网站高并发访问?
- maven工程结构目录
- 带checkbox的dtree
- 为什么自增(increment)运算符的 前置(prefix) 比 后置(postfix) 效率高?
- Caused by: java.lang.NoSuchMethodError
- 实验程序1
- Linux多线程简单聊天程序
- hdu 3065
- 好好学习,请各位朋友多多指教。
- 进程地址空间分布
- latex 中equation环境中\label的用法
- PHP 最新中文版手册 CHM 编译日期 2011-8-18