i++和++i的区别(C++)

        今天刷题偶然遇到关于比较i++和++i执行效率的问题,于是我重新了解了一下关于他们两的区别。

        1)赋值顺序不同,这个大家应该都知道。++i 是先自加再赋值,i++ 是先赋值再自加。

        在执行 a = i++ 时,先把i的值给a,i再加一,所以 a = 1 ,i = 2 ;

        在执行 b = ++i 时,先进行i自加1,后给b值,所以b = 3 ,i = 3;

2) ++i 的效率比 i++ 高

        i++ 在计算时,会用到中间变量存储,会占用更多的内存和时间。所以 ++i 的效率会比 i++ 高。查阅了相关资料后,发现其实对于C++内置类型,两者差别其实不大,但是从重载运算符来看自定义类型,引用一下大佬代码:

      


Operator Operator::operator++()
{
++value; //内部成员变量
return *this;
}
 
Operator Operator::operator++(int)
{
Operator temp;
temp.value=value;
value++;
return temp;
}

        我们可以发现后置++比前置++多了一个保存临时对象的操作,我们可以这样理解 a = i++,多做了一步将i的值保存了一份先给a,再对i进行++。

3)i++ 不能作为左值,但是 ++i 可以。

        一般来说,左值是可以放到赋值符号左边的变量。

        

         看,i++ = 1; 报错说表达式必须是可修改的左值,我们再联系上面的第二点,我认为是 i++  返回的是一个临时变量,临时变量认为是被const修饰的,所以 i++ 不能作为左值。

参考文章:

https://www.cnblogs.com/AndyJee/p/4550391.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值