++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

posted @ 2017-01-02 20:36  孙中明  阅读(137)  评论(0编辑  收藏  举报