您的位置:首页 > 其它

递增(++)和递减(--)运算符前置版本和后置版本的区别【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的时候会报错。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: