C C 中「 」操作符和「後 」操作符的優先順序

2021-06-19 05:56:16 字數 561 閱讀 1432

假設有如下的定義

char carr = ;

char cp = carr;

那麼表示式

*cp++;

的右值是什麼呢?

這個表示式在陣列遍歷的程式中非常常見,但我對於這個表示式的理解有些偏差,我一直認為它和下面的表示式是等價的。

*cp;

cp++;

即先對cp進行解引用操作,然後使cp指向陣列的下乙個位置。

雖然說最終的結果是一樣的,但是這樣理解是錯誤的。因為後++操作符的優先順序比*的高,這時我們發現這解釋不通啊,

如果後++的優先順序比*高的話,那麼*cp++表示式應該先將cp指向陣列的下乙個位置,然後才進行解引用操作,這樣的話

得到的右值和前面的不符!

其實在c或c++中對這個表示式的執行涉及3個步驟:

(1)++操作符產生cp的乙份拷貝;

(2).然後++操作符增加cp的值;

(3).最後,在cp的拷貝上執行解引用操作。

操作符優先順序

操作符優先順序 優先順序運算子 名稱或含義 使用形式 結合方向說明1 陣列下標 陣列名 常量表示式 左到右 圓括號 表示式 函式名 形參表 成員選擇 物件 物件.成員名 成員選擇 指標 物件指標 成員名2 負號運算子 表示式 右到左單目 型別 強制型別轉換 資料型別 表示式 自增運算子 變數名 變數...

操作符優先順序

優先順序 運算子含 義 要求運算 物件的個數 結合方向1 圓括號 下標運算子 指向結構體成員運算子 結構體成員運算子 自左至右2 邏輯非運算子 1 單目運算子 自右至左 按位取反運算子 自增運算子 自減運算子 負號運算子 型別 型別轉換運算子 指標運算子 位址與運算子 sizeof 長度運算子 3 ...

操作符優先順序

python 表示式語句中操作符的優先順序從最低優先順序 最後繫結 到最高優先順序 最先繫結 如下 乙個表示式語句中可以有多個上述操作符,最終返回乙個值 包括返回值為 none 的函式呼叫 而賦值語句中的賦值操作符 在操作符中優先順序最低,它右邊表示式的值計算完之後,才最後繫結到左邊的名稱。舉例如下...