++i和i++的根本区别 ...

至于++i和i++有什么区别,举个例子   
  1.a   =   i++;     等校为   
  a   =   i;   
  i   =   i   +   1;   
    
  2.a   =   ++i;     等校为   
  i   =   i   +   1;   
  a   =   i; 
 
  i++和++i的   最重要的区别大家都知道就是   +1和返回值的顺序   
  但,两这还有一个区别(在C++中)就是i++在实现的时候,产   
  生了一个local   object   
  class   INT;   
  //++i   的版本   
  INT   INT::operator++()   
  {   
          *this=*this+1;   
          return   *this;   
  }   
  //i++   的版本   
  const   INT   INT::operator   ++(int)   
  {   
            INT   oldvalue=*this;   
            *this=*this+1;   
            return   oldvalue   
  }   
    
  所以从效率上来说++i比i++来的更有效率   
  具体细节你可以看More   Effective   C++   的M6   
看看C++类重载运算符就知道了。   
  对于i++的实现是:   
          int   temp;   
          temp   =   i;   
          i   =   i+1;   
          return   temp;   
  而++i的实现是:   
          i   =   i+1;   
          return   i;   

比如printf("%d",i++);是先输出i值随后i自加,而printf("%d",++i);正好相反

for(operation1;operation2;operation3)   
  {   
        //Do   Something   
  }   
  都是按   
  operation1   
  operation2   
  //Do   Something   
  operation3   
  的顺序来执行的   
  而i++与++i在单独的语句中结果是一样的。   
    

简单而言: ++i 在 i 存储的值上增加一并向使用它的表达式 ``返回" 新的, 增加后的值; 而 i++ 对 i 增加一, 但返回原来的是未增加的值。

引用于 百度知道 https://zhidao.baidu.com/question/590293842.html

转载于:https://www.cnblogs.com/szm2019/p/7140899.html

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值