簡述前綴運算符與後綴運算符

對於初學者,經常糾結的一個問題就是 for 循環中的循環量遞增過程中,到底是應該用前綴運算符還是後綴運算符。

  • 邏輯
首先談一下前綴運算符和後綴運算符有什麼區別:粗略的講,
    • a++是當前值計算表達式,然後將變量a的值+1;
    • 而++a是先將a的值+1,然後使用新的值來計算表達式。
(這裏涉及到表達式和語句、副作用和順序點,有點複雜,暫時不在這裏闡述。)
在大多數情況下(一個正常的軟件工程規定的程序設計規範和風格,應該是儘量避免那種考題式的容易含糊的語句,應該儘量使用意思明確,即:一條語句實現一個功能)是沒有區別的,就邏輯上來說,for 循環中,使用前綴運算符和後綴運算符所得的結果都是一樣的,但是這裏涉及到一個重要的問題:效率!!!

  • 效率
我們在設計程序時,應當儘量減少程序的開銷,在能夠使用較少內存的地方,絕不去佔用多的內存,這樣可以提高程序的執行速度。
對於內置類型和當代的編譯器而言,這沒有多大差別。但是一旦涉及到程序員自定義的類類型時,就會體現出很大差別。(C++允許程序員重定義運算符,稱之爲運算符重載),如果把一個佔用內存較大的類作爲循環量對其使用遞增(遞減)運算符時,我們就應當使用前綴運算符++a(--a)。
原因如下:
    • 前綴運算符:(程序員自定義)將值+1,然後返回結果;
    • 後綴運算符:首先複製一個副本,將其值+1,然後將複製的副本返回。
很明顯能看出兩者之間的差別吧。

所以,在程序設計時,應該養成使用前綴運算符的習慣,在C++軟件工程中,經常會涉及到較大的類類型需要重載運算符,在不產生歧義的情況下,儘量使用前綴運算符能夠幫助我們提高程序的執行速度。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章