递增(++)和递减(--)运算符前置版本和后置版本的区别【i++,++i的区别】

前置版本(++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的时候会报错。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值