a = i++; 等校为 a = i; i = i + 1; 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自加1(相差于i = i+1)之后再进行其它的运算
所以 count = 6 + 5 + 4
如:
int i = 3;
int a = ++i;//先把i自加,再把i的值赋值给a
在输出时:i = 4;a = 4
还有一种叫i++
区别:
int i = 3;
int a = i++;//先把i的值赋值给a,再把i自加,
在输出时:i = 4;a = 3
运行结果是:
i=6
count=15
首选,++i 是i的自加1运算(即:i=i+1,加号在前面就是先加1,后赋值给i),有3次++i,所以就是i=i+1+1+1=6
count的值就是4+5+6=15
++i就是先计算(++i)的值,等于4,然后i=4,以此类推第二个括号等于5,i=5,第三个括号等于6,i=6,所以结果=4+5+6=15
你可以在eclipse里敲几行,自己看看结果就明白了。