C 前置操作與後置操作

2022-05-02 23:48:09 字數 715 閱讀 1397

最近在看c++ primer,看到書的中間部分,發現自己對先前的前置與後置操作理解的還不是很深刻。剛谷歌搜了一下,發現大家看的最多的那個鏈結講的也不是很清楚,至少在我這個小白看來,不是很清楚。

這邊為自己和大家理一理思路吧。

我們以例子來說明:

片段一:

int

main()

以上這段**的中的x,j的輸出結果是一樣的。

為:0123456789(以換行符相隔)。

接著,片段二:

int

main()

上邊這段**的輸出結果也為0123456789

而,片段三:

int

main()

這段**的輸出結果為12345679以及10

為什麼會造成這種不同,這裡我的理解為左值與右值的差異。

當以左值輸出的時候,兩者輸出結果無差異,只是效能上會有點優劣,如書中所說前置操作返回原值加上一以後的值;而後置操作則還要儲存初始值,然後再做加一操作。

當以右值輸出時,結果會有差異,既前置不返回原值,後置返回原值。

片段一,x與j均以左值輸出。

片段二&三,x與j以右值輸出。

在objective-c裡面

return ++c 意味著先執行操作一遍 c = c + 1 後再返回的c。而c++則表示原先的值照樣輸出。

區別前置 後置操作符

對於從c轉業者都知道 以 舉例 前置 累加後取出 後置 取出後累加在過載 操作符的時候,為了避免前置跟後置的區別,讓後置有乙個int的傳參。class upint public upint operator 前置 const upint operator int 後置upint i i 呼叫i.op...

C 學習筆記 前置 後置 操作符

在c語言中我們學習了前置操作符和後置操作符,比如 i,i,i i 由於 和 屬於同型別操作符,此處講解均以 作為模型。首先問乙個問題,i 和 i有何區別?i 就是先返回i的值然後再加1 i則是先對i加1再返回i的值。這是一般的解釋。工程中,在c c 中單獨的兩條語句在編譯器編譯後並沒有任何區別,實現...

前置操作符和後置操作符

操作符可以被過載 全域性函式和成員函式均可以進行過載 過載前置 操作符不需要額外的引數 過載後置 操作符需要乙個int型別的佔位引數 來看乙個例子 include include using namespace std class test intvalue test operator test o...