盡量使用遞增遞減運算子的前置版本(C )

2021-10-10 08:50:50 字數 808 閱讀 1777

為什麼推薦使用前置?

在復合表示式中,如果使用遞增(遞減)運算子的前置版本,會先將運算物件加1(減1),然後再對改變後的物件進行操作;而後置版本會先對該物件進行其他操作,再將其增1(減1)。

由此可見,相比後置版本,前置版本避免了不必要的工作,它把值加1(減1)後直接返回改變後的運算物件,而後置版本需要先將物件的原始值儲存下來以便於返回這個未修改的內容,如果我們不需要用到修改前的值,那麼後置版本的操作就是一種浪費。

對於整數和指標型別來說,編譯器可能會對這種額外的工作進行一定的優化;但是對於相對複雜的迭代器型別,這種額外工作就消耗巨大了。所以建議大家養成使用前置版本的習慣,這樣不僅不需要擔心效能的問題,而且更重要的是寫出來的**會更符合程式設計的初衷。

什麼時候使用後置?

如果我們想在乙個復合表示式中既要把變數加1(減1)又要使用它原來的值,這時候就推薦使用後置版本,使我們的程式更簡潔。

舉個栗子,我們要輸出vector容器中的正數直到遇到第乙個負數為止:

auto it=v.begin();

while(it!=v.end() && *it>=0)

cout << *it++ << endl;

//以上的最後一句等價於:

cout << *it << endl;

++it;

語句「*it++」,這種寫法很普遍,即先輸出it指標的解引用,再將it指標移動乙個位置,如果是先將指標位移,再返回解引用的值,就可能會出現操作空指標的錯誤,即試**引用乙個根本不存在的元素。

大多c++程式追求簡潔、摒棄冗長,因此建議大家習慣這種簡潔的寫法,程式出錯的可能性也會降低。

C 遞增 遞減 運算子過載

每日心得 獨上高樓,望盡天涯路 日期 12.14 學習內容 遞增 遞減 運算子過載 重點 遞增運算子過載 1 前置遞增 返回 類的變數自身 可用於 重複 遞增 p 合法 2 後置遞增 返回 區域性變數的值 不可用於 重複 遞增 p 合法 p 非法 表示式必須時可修改左值 includeusing n...

JS學習之遞增遞減運算子

doctype html utf 8 遞增遞減運算子 title 1.想要乙個變數自己加1 var num 1 num num 1 num console.log num 2.前置遞增運算子 var age 10 age 類似於 age age 1 console.log age 3.檢測 var ...

遞增 遞減運算子位於變數前後的區別

i i,我們通常稱為 字首試 i i 我們通常稱為 字尾試 乙個是操作符位於變數之前,乙個是操作符位於變數之後。區別 字首試會先執行運算,再生成值 而字尾試會先生成值,在執行運算。public class autoinc public static void main string args int...