趣談i++與++i

遞增/遞減操作符有兩種形式:前綴(++i)格式和後綴(i++)格式。我們都知道,它們的主要區別在於返回的表達式的值不同:

int i=3,j;
j=i++; //i=4,j=3
//j=++i; //i=4,j=4

那麼,在for循環中,用它們作爲步長表達式,會有何區別呢?

for(i=0;i<100;i++)
{//do sth...}

for(i=0;i<100;++i)
{//do sth...}

從運行邏輯上,它們沒有區別,因爲沒有用到它們作爲表達式所返回的值。那麼效率上呢?我們看看它們通常會這麼工作:

前綴(++i): 將i加1,返回結果。

後綴(i++): 將i的值複製一個拷貝,再將i加1,然後將拷貝返回。

從工作原理上看,它們在性能上有微妙的差別,尤其是用戶自定義類的遞增/遞減操作符,放在大量循環中運行時,我們更推薦前綴的寫法,儘管++i寫起來有些彆扭。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章