C 字首自增 字尾自增及過載

2021-07-03 20:14:39 字數 885 閱讀 6902

1.內建型別

字首式返回變數自增或自減之後的值,字尾式對變數進行增、減,但返回變數原來的值。

字首自增生成左值,而字尾自增操作生成右值

左值:一定應著乙個位址,非const左值可讀可寫,​占用一塊記憶體。可以出現在賦值操作左邊的值。

右值:可用於賦值操作的右邊但不能用於左邊的值,​只可讀不可寫,​可能為const,可能不佔據記憶體,只是乙個中間計算結果

#include using namespace std;

int main()

2.自定義型別:

1. 為了與內建型別一致,字首式操作符應返回被增量或減

量物件的引用:因為物件沒變,從呼叫之後起,對返回值的修改必須反映到原物件上,所以應該返回引用,而不能是物件。

2.為了與內建操作符一致, 字尾式操作符應返回舊值 (即,

尚未自增或自減的值),並且應作為值返回,而不是

返回引用。

因為字尾式的處理過程為:首先建立乙個區域性物件,並將其初始化為原物件的副本,然後對原物件呼叫字首自增運算子,最後返回區域性物件。因為不能返回區域性物件的引用,所以只能返回物件而不能返回引用。

注:若要與內建型別完全一致,由於內建型別的字尾自增返回右值,只可讀不可寫,所以可以通過將字尾操作符的返回值定義為const 物件,即可使其成為右值。

3.不允許修改基本型別的臨時值

因為基本型別的臨時值是右值,不可寫(例如函式返回值為基本型別時,返回值是存在eax暫存器中),而對於自定義型別,由於臨時物件佔據記憶體空間,是左值,所以可以

修改它所佔據的記憶體​。

所以對當函式返回值是基本型別時,不能對返回值進行自增自減等寫入操作。

C語言自增自減

i,i 使用i之前,先使i的值加 減 1。i i 使用i之後,再使i的值加 減 1。其中 i和i 的作用相當於i i 1。但是 i和i 不同之處在於 i是先執行i i 1後,再使用i的值 而i 是先使用i的值後,再執行i i 1。例如 i 6a i i的值先變成7,再賦值給a,a的值才為7 b i ...

自增「 」和自減「 」

int x 10 int j j x 看這邊 system.out.println x int x 10 int j x x 看這邊 system.out.println x 第乙個會輸出11,第二個會輸出10。這是今天偶然看到的,而這個解釋聽起來比較容易理解 x 是乙個表示式,它的值是x,在這個表...

正解自增 自減

許多語言都有自增 自減運算子。下面以c語言為例,將此類運算子的運算特徵正解一下 一 先看字尾 b 2 a b 計算過程 1.先計算表示式b 的值,結果為2 即將b自增前的值作為表示式b 的值 2.再將表示式b 的值賦值給a,即a得到2 3.最後將b自增後的值賦值給b,即b為3 注意 在此過程中,沒有...