C++递增/减运算符前缀格式和后缀格式的区别

区别一

++i是左值,i++是右值。

区别二

实现代码不同
++i等同于i=i+1,然后返回的是变量i本身,所以是一个左值。
i++是先将i放在一个临时变量中,再执行++i的操作,然后返回临时变量的值,所以是一个右值。
所以i++执行速度会比++i慢一点,它多了一个分配内存并赋值的操作。

区别三

优先级不同
例:

	int i[5] = { 1,3,5,7,9 };
	int* p1 = i;
	int* p2 = i;
	int* p3 = i;
	//*和前缀++/--优先级相同,以从右到左的方式结合
	//先对p1进行递增,指向第二个元素,*用于被递增后的p1,所以输出是3
	cout << "*++p1=" << *++p1 << endl;

	//先取p2指向的值(第一个元素),再递增,所以输出是2
	cout << "++*p2=" << ++*p2 << endl;

	//后缀++/--优先级更高
	//先对p3递增,指向第二个元素
	//后缀运算符意味着虽然递增了,但返回的仍是原先的值
	//所以解引得到的仍是第一个元素的值,上一条语句将它改成了2
	cout << "*p3++=" << *p3++ << endl;

运行结果
传送门:
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值