快速記憶 C語言 php的運算子優先順序 結合性

2021-09-30 15:27:45 字數 2168 閱讀 4705

author: selfimpr

blog:

mail: [email protected]

閱讀另由於是php程式設計師, 所以對php的對應優先順序做類似分析.

最後是用php和c中的?:結合性的不同解釋"結合性"的問題.

不正確的地方請各位指出.

* c語言運算子優先順序(共計15個等級)

1. 非運算子(函式呼叫, 復合資料結構取元素): "()", "", "->", "."

2. 單目運算子: "!", "~", "++", "--", "-", "(type)"(型別轉換), "*", "&", "sizeof"

3. 雙目運算子:

1) 算術運算子:

a) 乘除: "*", "/", "%"

b) 加減: "+", "-"

2) 移位運算子: "<<", ">>"

3) 關係運算子:

a) 大小比較: "<", "<=", ">", ">="

b) 相等比較: "==", "!="

4) 邏輯運算子:

a) 按位邏輯運算子:

* 按位與: "&"

* 按位異或: "^"

* 按位或: "|"

b) 順序邏輯運算子:

* 短路與: "&&"

* 短路或: "||"

4. 三目運算子: "?:"

5. 賦值運算子: "=", "*=", "/=", "%=", "+=", "-=", ...等等

6. 逗號運算子: ","

* c語言運算子結合性:

1. 右結合: 單目運算子, 三目運算子, 賦值運算子

2. 左結合: 第一條未列出所有運算子為左結合

* php運算子優先順序(共計22個等級)

1. 非運算子(復合資料結構取元素, 特殊運算子):

1) 物件建立: "clone", "new"

2) 取復合結構元素: ""

2. 單目運算子:

1) 自增自減: "++", "--"

2) 型別轉換, 錯誤抑制符, 取反運算子, 負號: "(type)"(型別轉換), "@", "~", "-"

3) 型別判定符: "instanceof"

4) 邏輯非: "!"

3. 雙目運算子:

1) 算術運算子:

a) 乘除: "*", "/", "%"

b) 加減: "+", "-"

2) 移位運算子: "<<", ">>"

3) 關係運算子:

a) 大小比較: "<", "<=", ">", ">="

b) 相等比較: "==", "!=", "===", "!=="

4) 邏輯運算子:

a) 按位邏輯運算子:

* 按位與: "&"

* 按位異或: "^"

* 按位或: "|"

b) 順序邏輯運算子:

* 短路與: "&&"

* 短路或: "||"

4. 三目運算子: "?:"

5. 賦值運算子: "=", "*=", "/=", "%=", "+=", "-=", ...等等

6. 低優先順序邏輯運算子:

* 與: "and"

* 異或: "xor"

* 或: "or"

7. 逗號運算子: ","

* php運算子結合性:

1. 無結合性: 物件建立, 自增自減, 型別判定符, 關係運算子

2. 右結合: 第一條中沒有列出的單目運算子, 賦值運算子

3. 左結合: 前面兩條未列出的所有運算子均為左結合

* c語言和php中的三目運算子結合性差異比較

1. c語言中"?:"為右結合

2. php中"?:"為左結合

3. 例項: printf("%d\n", 1 ? 2 : 3 ? 4 : 5);

1) c語言中解析: 先運算最後乙個"?:", 將最後乙個?之前的表示式看作整體

printf("%d\n", (1 ? 2 : 3) ? 4 : 5);

/* 結果: 4 */

2) php中解析: 先運算第乙個"?:", 將第乙個:之後的表示式看作整體

printf("%d\n", 1 ? 2 : (3 ? 4 : 5));

/* 結果: 2 */

C語言運算子優先順序 之 快速記憶

先摘錄譚浩強 c程式設計 對運算子優先順序的兩點說明 1.同一優先順序的運算子,運算次序由結合方向來決定。例如 a 與 具有相同的優先級別,其結合方向為自左向右,因此3 5 4的運算次序是先乘後除 b 和 為同一優先順序,結合方向為自右向左,因此 i 相當於 i 2.從上述表中可以大致歸納出各類運算...

C語言 運算子與 運算子

我們平時使用帶參巨集時,字串中的巨集引數是沒有被替換的。例如 輸出結果為 然而,我們期望輸出的結果是 5 20 2513 14 27 這該怎麼做呢?其實,c語言允許在字串中包含巨集引數。在類函式巨集 帶參巨集 中,號作為乙個預處理運算子,可以把記號轉換成字串。例如,如果a是乙個巨集形參,那麼 a就是...

C語言 運算子和 運算子

變數 代表 取變數的位址 變數 代表 指標型的變數 取址運算子 用來取得其運算元的位址。如果運算元 x 的型別為 t,則表示式 x 的型別是 t 型別指標 指向 t 的指標 取址運算子的運算元必須是在記憶體中可定址到的位址。換句話說,該運算子只能用於函式或物件 例如左值 而不可以用於位欄位,以及那些...