++i和i++

作者: 听说昵称不能太美 | 来源:发表于2017-04-30 17:41 被阅读0次

    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 增加一, 但返回原来的是未增加的值。

    相关文章

      网友评论

          本文标题:++i和i++

          本文链接:https://www.haomeiwen.com/subject/hxyxtxtx.html