C++操作符的優先級
C++操作符的優先級 | |||
操作符及其結合性 | 功能 | 用法 | |
L L L | :: :: :: | 全局作用域 類作用域 名字空間作用域 | ::name class::name namespace::name |
L L L L L | . -> [] () () | 成員選擇 成員選擇 下標 函數調用 類型構造 | object.member pointer->member variable[expr] name(expr_list) type(expr_list) |
R R R R R | ++ -- typeid typeid 顯示強制類型轉換 | 後自增操作 後自減操作 類型ID 運行時類型ID 類型轉換 | lvalue++ lvalue-- typeid(type) typeid(expr) cast_name<type>(expr) |
R R R R R R R R R R R R R R | sizeof sizeof ++ -- ~ ! - + * & () new delete delete[] | 對象的大小 類型的大小 前自增操作 前自減操作 位求反 邏輯非 一元負號 一元正號 解引用 取地址 類型轉換 創建對象 釋放對象 釋放數組 | sizeof expr sizeof(type) ++lvalue --lvalue ~expr !expr -expr +expr *expr &expr (type)expr new type delete expr delete []expr |
L L | ->* .* | 指向成員操作的指針 指向成員操作的指針 | ptr->*ptr_to_member obj.*ptr_to_member |
L L L | * / % | 乘法 除法 求模(求餘) | expr * expr expr / expr expr % expr |
L L | + - | 加法 減法 | expr + expr expr - expr |
L L | << >> | 位左移 位右移 | expr << expr expr >> expr |
L L L L | < <= > >= | 小於 小於或等於 大於 大於或等於 | expr < expr expr <= expr expr > expr expr >= expr |
L R | == != | 相等 不等 | Expr == expr Expr != expr |
R | & | 位與 | Expr & expr |
R | ^ | 位異或 | Expr ^ expr |
R | | | 位或 | Expr | expr |
R | && | 邏輯與 | Expr && expr |
R | || | 邏輯或 | Expr || expr |
R | ?: | 條件操作 | Expr ? expr : expr |
R R R R R | = *=,/=,%= +=,-= <<=,>>= &=,|=,^= | 賦值操作 符合賦值操作 | Lvalue= expr Lvalue+= expr …… |
R | throw | 拋出異常 | Throw expr |
L | , | 逗號 | Expr, expr |
記憶方法:
--摘自《C語言程序設計實用問答》 -呂鳳翥 呂 濤著
問題:如何記住運算符的15種優先級和結合性?
解答:C語言中運算符種類比較繁多,優先級有15種,結合性有兩種。
如何記憶兩種結合性和15種優先級?下面講述一種記憶方法。
結合性有兩種,一種是自左至右,另一種是自右至左,大部分運算符的結合性是自左至右,只有單目運算符、三目運算符的賦值運算符的結合性自右至左。
優先級有15種。記憶方法如下:
記住一個最高的:構造類型的元素或成員以及小括號。
記住一個最低的:逗號運算符。
剩餘的是一、二、三、賦值。
意思是單目、雙目、三目和賦值運算符。
在諸多運算符中,又分爲:
算術、關係、邏輯。
兩種位操作運算符中,移位運算符在算術運算符後邊,邏輯位運算符在邏輯運算符的前面。再細分如下:
算術運算符分 *,/,%高於+,-。
關係運算符中,》,》=,《,〈=高於==,!=。
邏輯運算符中,除了邏輯求反(!)是單目外,邏輯與(&&)高於邏輯或(||)。
邏輯位運算符中,除了邏輯按位求反(~)外,按位與(&)高於按位半加(^),高於按位或(|)。
這樣就將15種優先級都記住了,再將記憶方法總結如下:
去掉一個最高的,去掉一個最低的,剩下的是一、二、三、賦值。雙目運算符中,順序爲算術、關係和邏輯,移位和邏輯位插入其中。
問題:如何記住運算符的15種優先級和結合性?
解答:C語言中運算符種類比較繁多,優先級有15種,結合性有兩種。
如何記憶兩種結合性和15種優先級?下面講述一種記憶方法。
結合性有兩種,一種是自左至右,另一種是自右至左,大部分運算符的結合性是自左至右,只有單目運算符、三目運算符的賦值運算符的結合性自右至左。
優先級有15種。記憶方法如下:
記住一個最高的:構造類型的元素或成員以及小括號。
記住一個最低的:逗號運算符。
剩餘的是一、二、三、賦值。
意思是單目、雙目、三目和賦值運算符。
在諸多運算符中,又分爲:
算術、關係、邏輯。
兩種位操作運算符中,移位運算符在算術運算符後邊,邏輯位運算符在邏輯運算符的前面。再細分如下:
算術運算符分 *,/,%高於+,-。
關係運算符中,》,》=,《,〈=高於==,!=。
邏輯運算符中,除了邏輯求反(!)是單目外,邏輯與(&&)高於邏輯或(||)。
邏輯位運算符中,除了邏輯按位求反(~)外,按位與(&)高於按位半加(^),高於按位或(|)。
這樣就將15種優先級都記住了,再將記憶方法總結如下:
去掉一個最高的,去掉一個最低的,剩下的是一、二、三、賦值。雙目運算符中,順序爲算術、關係和邏輯,移位和邏輯位插入其中。
轉自: