单目运算符++ --

     关于这个知识点的总结很早就想写啦,前缀++、后缀++是在笔试的时候频繁出现的。

     以前对她的理解只是表面上的,从网上搜索到一个总结:

              前缀++,是先加后赋值,

              如 i = 1;

                  m = ++i;

                  最后 m 和 i 的值都是2。

              后缀++,是先赋值后加,

              如 i = 1;

                  m = i++;

                  最后 m 的值为 1, i 的值为 2。

 

    在很长的时间里,这个总结是我解决这类问题的圣经,认为这两种++区别也就尽在此。

    后来与到了一个++的问题发现用我以前的理解的圣经解决不了:

 

    1) i++++;

    2) ++i++;

    

    对于第一个问题,不能编译通过,而却能第二问题能成功编译。

    这不得不让我重新去认识++这个单目运算符!

 

    运算符其实也是函数,前缀++与后缀++是两个不同的函数

    前缀++的实现:自加之后返回自己, 这样前缀++的返回后的值是一个左值;

    后缀++的实现:先把自己拷贝给一个临时变量,再自加,返回临时变量,这样后缀++的返回后的值是一个右值,不能进行赋值运算,离开后缀++本行后,临时变量就会被销毁。

    (在C++里实现这两种++重载的时候,能很直观看出其区别)

   

 

     所以 1)  i++++; 是不能编译通过的, i++ 后返回一个临时变量,是右值, 在对右值的临时变量进行++,是不允许的。

             2) ++i++; ++i 后返回的是自己,是一个左值,再进行++是没有问题的。

 

以上只是个人理解,如有错误,欢迎指出!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值