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

你可能感兴趣的:(++i和i++)