递增(++)和递减(--)运算符前置版本和后置版本的区别【i++,++i的区别】
2019-04-10 16:49
218 查看
前置版本(++i):首先将运算对象加1,然后将改变后的对象作为求值结果;
后置版本(i++):也会将运算对象加1,但是求值结果是运算对象改变之前那个值的副本;
int i = 0,j; j = ++i; //j = 1,i = 1;前置版本得到递增之后的值; 即 i = i + 1, j = 1;
int i = 0,j; j = i++; //j = 0,i = 1;后置版本得到递增之前的值;即 j = i, i = i + 1;
两种运算符都必须作用于左值运算对象(当对象被用作左值时,用的是对象的在内存中的位置):
前置版本将对象本身作为左值返回;
后置版本将对象原始值的副本作为右值返回(当对象被用作右值,用的是对象的值(内容))。
建议:除非必须,否则不用递 增减运算符的后置版本;
使用后置版本的一个例子:
// 混用解引用和递增运算符 vector<int> v; int num; while(cin>>num) { v.push_back(num); } auto p = v.begin(); while(p != v.end() && *p >= 0) { cout<<*p++<<endl; //*p++ = *(p++) //cout<<*p<<endl; //++p; } //输出当前值并将p向前移动一个元素 //如果改成*++p,程序无法输出第一个元素,且如果序列中没有负值,程序将可能试图解引用一个根本不存在的元素 //我自己试的时候程序debug的时候会报错。
相关文章推荐
- 实现前置与后置递增(递减)运算符的重载
- 前置运算符与后置运算符的区别
- C++中前置递增运算符和后置递增运算符的区别
- 前置和后置操作符的区别(More Effective_C++_6(运算符))
- 前置(后置)递增(递减)(读书笔记)
- 前置递增和后置递增的区别
- 游戏效率优化(1) 前置递增与后置递增区别
- JavaScript运算符:递增和递减(++i,--i 和 i++,i-- 的区别)
- 前置与后置的递增/递减操作符
- 前置运算符和后置运算符的区别
- C++前置和后置运算符的区别
- 《More Effective C++》Rule 6:区别递加和递减符号的前置和后置形式
- 关于前后缀递增++和递减--运算符的一点区别
- 前置运算符和后置运算符的区别
- 前置与后置运算符的区别
- 自增运算符前置与后置区别(i++,++i)
- C++ iterator遍历 以前没注意到的一个点 前置递增和后置递增
- 前置和后置运算符
- 前置递增和后置递增
- 操作符--自动递增和递减(前缀式和后缀式的区别、i++和++i区别)