C++操作符的優先順序
轉自:http://www.cnblogs.com/mx113/articles/1603972.html
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種優先順序都記住了,再將記憶方法總結如下:
去掉一個最高的,去掉一個最低的,剩下的是一、二、三、賦值。雙目運算子中,順序為算術、關係和邏輯,移位和邏輯位插入其中。
相關文章
- C++運算子優先順序C++
- C++運算子優先順序特例C++
- C++ 運算子優先順序表C++
- CSS優先順序CSS
- 中斷優先順序
- python運算子及優先順序順序Python
- [譯]HTTP/2的優先順序HTTP
- CSS的處理優先順序CSS
- Android程式優先順序Android
- SQL 優先順序join>whereSQL
- java運算子優先順序Java
- nginx快取優先順序Nginx快取
- php運算子優先順序PHP
- css優先順序彙總CSS
- css選擇器的優先順序CSS
- 談Nginx的Location匹配優先順序Nginx
- 警惕執行緒的優先順序執行緒
- 併發請求的優先順序
- CSS 選擇器的優先順序CSS
- java setPriority()設定優先順序Java
- 封裝優先順序佇列封裝佇列
- Yarn任務優先順序配置Yarn
- gitignore優先順序小結Git
- css 選擇器優先順序CSS
- java執行緒優先順序Java執行緒
- 資料型別優先順序資料型別
- 深入理解css優先順序CSS
- NLS引數優先順序解析
- 華為路由協議優先順序路由協議
- SpringBoot配置檔案優先順序載入順序Spring Boot
- nginx的location匹配順序、優先順序,location對映衝突排查Nginx
- Java之執行緒的優先順序Java執行緒
- HttpClient和HttpGet 引數的優先順序HTTPclient
- Nginx location 在配置中的優先順序Nginx
- 【分享】如何評估 bug 的優先順序
- PLSQL Language Reference-PL/SQL語言基礎-表示式-操作符優先順序SQL
- 何為CSS 樣式優先順序CSS
- html優先順序和層疊性HTML