1.a = i++; 等校為
? ?a = i;
? ?i = i + 1;
2.a = ++i; 等校為
? ?i = i + 1筒主;
? ?a = i;
i++和++i的 最重要的區(qū)別大家都知道就是 +1和返回值的順序
但阵谚,兩這還有一個區(qū)別(在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++來的更有效率
具體細節(jié)你可以看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
的順序來執(zhí)行的
而i++與++i在單獨的語句中結果是一樣的盗似。
簡單而言: ++i 在 i 存儲的值上增加一并向使用它的表達式 ``返回" 新的, 增加后的值; 而 i++ 對 i 增加一, 但返回原來的是未增加的值。