C 深陷 之「優先順序表及左右值」

2021-10-07 05:23:41 字數 3176 閱讀 2457

表示式中只有乙個運算子的時候,例如a + b,不存在優先順序,因為一定是計算加法。

表示式中含有2個或2個以上的運算子的時候,表示式被稱為復合表示式(compound expression)

優先順序(precedence)指的是在計算復合表示式時,運算子按照規定的順序計算。

例如a + b * c要先計算乘法b * c再計算加法。

本文將列出c++中所有的運算子及其優先順序

下面的**,按照優先順序將運算子分組。

組的位置越靠前,優先順序越高;

同一組內的優先順序相同。

(參考《c++ primer(第5版)》)

結合律運算子

功能用例

左值與右值左::

全域性作用域

::name左::

類作用域

class::name左::

命名空間作用域

namespace::name左.

成員訪問

object.member

與運算物件相同

左->

成員訪問

pointer->member

運算物件是乙個指標型別,返回乙個左值

左[ ]

下標expr[expr]左()

函式呼叫

name(expr_list)左()

型別構造

type(expr_list)右++

後置遞增運算子

lvalue++

運算物件是左值,物件原始值的副本作為右值返回右–

後置遞減運算子

lvalue–

運算物件是左值,物件原始值的副本作為右值返回

右typeid

型別id

typeid(type)

右typeid

執行時型別id

typeid(expr)

右explicit cast

型別轉換

cast_name(expr)右++

前置遞增運算

++lvalue

運算物件是左值,物件本身作為左值返回右–

前置遞減運算子

–lvalue

運算物件是左值,物件本身作為左值返回右~

位求反~expr右!

邏輯非!expr

運算物件和求值結果都是右值右-

一元負號

-expr

運算物件和求值結果都是右值右+

一元正號

+expr

運算物件和求值結果都是右值右*

解引用*expr右&

取位址&lvalue右()

型別轉換

(type) expr

右sizeof

物件的大小

sizeof expr

右sizeof

型別的大小

sizeof(type)

右sizeof…

引數包的大小

sizeof…(name)

右new

建立物件

new type

右new

建立陣列

new type[size]

右delete

釋放物件

delete expr

右delete

釋放陣列

delete expr

右noexcept

能否丟擲異常

noexcept(expr)

左->*

指向成員選擇的指標

ptr->*ptr_to_member左.*

指向成員選擇的指標

obj.*ptr_to_member左*

乘法expr * expr

運算物件和求值結果都是右值左/

除法expr / expr

運算物件和求值結果都是右值左%

取模(取餘)

expr % expr

運算物件和求值結果都是右值左+

加法expr + expr

運算物件和求值結果都是右值左-

減法expr - expr

運算物件和求值結果都是右值

左<<

向左移位

expr << expr

左》向右移位

expr >> expr

左<

小於expr < expr

運算物件和求值結果都是右值

左<=

小於等於

expr <= expr

運算物件和求值結果都是右值

左》大於expr > expr

運算物件和求值結果都是右值

左》=大於等於

expr >= expr

運算物件和求值結果都是右值左==

相等expr == expr

運算物件和求值結果都是右值左!=

不相等expr != expr

運算物件和求值結果都是右值左&

位與expr & expr左^

位異或expr ^ expr左|

位或expr | expr左&&

邏輯與expr && expr

運算物件和求值結果都是右值左||

邏輯或expr || expr

運算物件和求值結果都是右值

右? :

條件cond ? expr1 : expr2

當expr1和expr2都是左值或者能轉換成同一種左值型別時,結果是左值;否則結構是右值右=

賦值lvalue = expr

左側運算物件是乙個可修改的左值,結果是乙個左值

右*=, /=, %=

復合賦值

lvalue += expr等

與賦值運算子一樣

右+=, -=

右<<=, >>=

右&=, |=, ^=

右throw

丟擲異常

throw expr左,

逗號expr1, expr2

如果expr2是左值,則結果是左值;否則右值

C64X EDMA優先順序及優先順序佇列

下圖為edma傳輸請求方框圖 從圖中我們可以看到,請求有三種 ll2控制器傳輸請求 l2控制器發布所有用於cache服務的傳輸請求 如訪問非cache記憶體 qdma傳輸等。對c64x dsp,cache服務請求可以在任何優先順序上產生,這可以通過cache配置暫存器 ccfg 的p位來設定。對於讀...

HTML引用CSS樣式方式及左右優先順序

一 引用方式 一 內聯樣式 width 400px height 300px border 4px ddd solid margin 15px auto 內聯樣式 div 二 內部樣式 doctype html text css boxview style head boxview 內容展示文字.d...

nginx之location匹配優先順序及順序

nginx通過server塊中location配置用以匹配不同url訪問 location配置方式主要包括精準匹配 普通匹配和正則匹配 location expression 精準匹配 location expression 普通匹配 location expression 普通匹配 locatio...