2012年4月4日 星期三

[筆記] i++ 好,還是 ++i 好?

 作者  ie945167 (龍蝦)                                      站內  Lobster
 標題  [筆記] i++ 好,還是 ++i 好?
 時間  2012/04/04 Wed 17:41:35
───────────────────────────────────────

不負責任聲明:以下憑印象+google寫成,有錯誤很正常 0rz

              如果有人願意指出錯誤,我會很感謝您的 <(_ _)>

--------------------本文開始分隔線--------------------

下面是我們常用到的迴圈
for(i=0 ; i<? ; i++)
{
    (something)
}

大家常用 i++ 還是 ++i 呢?

其背後的運作模式為何?

T& opertor++ ()
{
    a = i++;
    a = ++i;
}

取址運算子 &
取值運算子 *

i++
    temp = (*this); // temp = i
    ++*this;        // i = i + 1
    return *temp;   // return = temp

++i
    ++*this;        // i = i + 1
    return *this;   // return i

簡單來說,i++ 背後會比 ++i 多複製了一次(我印象中聽到是兩次…0rz)

如果 i++ or ++i 的 i 只是單純的資料型態,如 int

那麼先加或後加就沒什麼太大的差別了

但是如果 i 是代表一個很大的物件

那麼多做的那些動作對於程式執行的效率就會有所影響

因此建議盡可能養成使用 ++i 的寫作習慣 (不過我已經寫了快七年的 i++ 了…0rz)

(對於ints 和 pointer,編譯器最佳化可將這額外的動作去除。但對於較複雜的
 iterator 型別,這個額外動作的潛在代價可能很高。)

--

     身高不是距離
                   技巧不是問題
                                 只要有"心"
                                             人人都可 定‧三‧米


--
▅◣ Origin:  謠 言 報  bbs.csie.fju.edu.tw
▋◤ Author: ie945167 從 219-85-0-189-adsl-nei3.dynamic.so-net.net.tw 發表

沒有留言:

張貼留言