對於初學者,經常糾結的乙個問題就是 for 迴圈中的迴圈量遞增過程中,到底是應該用字首運算子還是字尾運算子。
首先談一下字首運算子和字尾運算子有什麼區別:粗略的講,
(這裡涉及到表示式和語句、***和順序點,有點複雜,暫時不在這裡闡述。)
在大多數情況下(乙個正常的軟體工程規定的程式設計規範和風格,應該是盡量避免那種考題式的容易含糊的語句,應該盡量使用意思明確,即:一條語句實現乙個功能)是沒有區別的,就邏輯上來說,for 迴圈中,使用字首運算子和字尾運算子所得的結果都是一樣的,但是這裡涉及到乙個重要的問題:效率!!!
我們在設計程式時,應當儘量減少程式的開銷,在能夠使用較少記憶體的地方,絕不去占用多的記憶體,這樣可以提高程式的執行速度。
對於內建型別和當代的編譯器而言,這沒有多大差別。但是一旦涉及到程式設計師自定義的類型別時,就會體現出很大差別。(c++允許程式設計師重定義運算子,稱之為
運算子過載),如果把乙個占用記憶體較大的類作為迴圈量對其使用遞增(遞減)運算子時,我們就應當使用字首運算子++a(--a)。
原因如下:
很明顯能看出兩者之間的差別吧。
所以,在程式設計時,
應該養成使用字首運算子的習慣,在c++軟體工程中,經常會涉及到較大的類型別需要過載運算子,在不產生歧義的情況下,盡量使用字首運算子能夠幫助我們提高程式的執行速度。
字首 字尾 運算子過載
舉報 分類 c常用備查 24 c 43 下面例子程式中 const fraction operator int 中 int不過是個啞元 dummy 是永遠用不上的 它只是用來判斷 是prefix 還是 postfix 記住,如果有啞元,則是postfix,否則,就是prefix 就像其他的一元演算法...
字首運算子和字尾運算子優先順序
字首運算子是從右到左 字尾運算子是從左到右!如 1.pt 現將 應用於pt,然後將 應用於被遞增後的pt double x pt increment pointer,take the value i,e.arr 2 or 23.42.pt 另一方面,pt意味著先取得pt指向的值,然後將這個值加1,即...
NOT運算子與 運算子
6.4.2 not運算子與 運算子 對於簡單的條件查詢,not運算子與 運算子的功能幾乎沒有什麼區別,那麼not運算子的優勢體現在 呢?答案是它可以與其他運算子組合使用,這一點是 運算子所不能實現的。在6.4.1節已經介紹了not運算子與in運算子組合使用的例子,下面給出乙個not運算子與betwe...