運算符優先級 - C++
-
實際上被解釋為a & b != 0
,a & (b != 0)
優先級高于!=
&
#include <iostream>
using namespace std;
int main(int argc, char** argv) {
cout << "a & b != 0 : " << (1 & 2 != 0) << endl;
cout << "a & b != 0 : " << ((1 & 2) != 0) << endl;
}
-
實際上被解釋為r = a << 4 + 1
,r = a << (4 + 1)
優先級高于+
<<
#include <iostream>
using namespace std;
int main(void) {
cout << "r = a << 4 + 1 : " << (8 << 4 + 1) << endl;
cout << "r = a << 4 + 1 : " << ((8 << 4) + 1) << endl;
}
18個優先級組
優先級第1組 | 運算符 | 結合性 | 含義 |
---|---|---|---|
第1組 | | 作用域解析運算符 | |
第2組 | | 分組 | |
| L-R 從左到右 | 函數調用 | |
| 值構造,即type(expr) | ||
| 數組下标 | ||
| 間接成員運算符 | ||
| 直接成員運算符 | ||
| 專用的類型轉換 | ||
| 專用的類型轉換 | ||
| 專用的類型轉換 | ||
| 專用的類型轉換 | ||
| 類型辨別 | ||
| 加1運算,字尾 | ||
| 減1運算,字尾 | ||
第3組 | | R-L | 邏輯非 |
| 位非 | ||
| 一進制加号(正号) | ||
| 一進制減号(負号) | ||
| 加1運算,字首 | ||
| 減1運算,字首 | ||
| 位址 | ||
| 解除引用(間接值) | ||
| 類型轉換,即(type)expr | ||
| 長度,以位元組為機關 | ||
| 動态配置設定記憶體 | ||
| 動态配置設定數組 | ||
| 動态釋放記憶體 | ||
| 動态釋放數組 | ||
第4組 | | L-R | 成員解除引用 |
| 間接成員解除引用 | ||
第5組 | | L-R | 乘 |
| 除 | ||
| 模(餘數) | ||
第6組 | | L-R | 加 |
| 減 | ||
第7組 | | L-R | 左移 |
| 右移 | ||
第8組 | | L-R | 小于 |
| 小于或等于 | ||
| 大于或等于 | ||
| 大于 | ||
第9組 | | L-R | 等于 |
| 不等于 | ||
第10組 | | L-R | 按位 AND |
第11組 | | L-R | 按位 XOF(異或) |
第12組 | | L-R | 按位 OR |
第13組 | | L-R | 邏輯 AND |
第14組 | | L-R | 邏輯 OR |
第15組 | | R-L | 條件 |
第16組 | | R-L | 簡單指派 |
| 乘并指派 | ||
| 除并指派 | ||
| 求模并指派 | ||
| 加并指派 | ||
| 減并指派 | ||
| 按位 AND 并指派 | ||
| 按位 XOF 并指派 | ||
| 按位 OR 并指派 | ||
| 左移并指派 | ||
| 右移并指派 | ||
第17組 | | L-R | 引發異常 |
第18組 | | L-R | 将兩個表達式合成一個 |