运算符优先级
优先级 | 运算符 | 叙述 | 示例 | 重载型 | 结合性 |
---|---|---|---|---|---|
1 | :: | 作用域解析(C++专有) | Class::age = 2 | 否 | |
2 | ++ | 后缀递增 | i++ | ||
{- -} | 后缀递减 | i- - | |||
{} | 组合 | ||||
() | 函数调用或变量初始化 | ||||
[] | 数组访问 | array[4] = 2; | |||
. | 以对象方式访问成员 | obj.age = 34; | |||
-> | 以指针方式访问成员 | ptr->age = 34; | |||
dynamic_cast | 运行时检查类型转换(C++专有) | ||||
static_cast | 未经检查的类型转换(C++专有) | ||||
reinterpret_cast | 重定义类型转换(C++专有) | ||||
const_cast | 更改非常量属性(C++专有) | ||||
typeid | 获取类型信息(C++专有) | ||||
3 | ++ | 前缀递增 | ++i | ||
– | 前缀递减 | –i | |||
+ | 一元正号 | int i = +1; | |||
- | 一元负号 | int i = -1; | |||
! or not | 逻辑非 or !的备用拼写 | if (!done) … | |||
~ or compl | 按位取反 or ~的备用拼写 | flag1 = ~flag2; | |||
(type) | 强制类型转换 | int i = (int)floatNum; | |||
* | 取指针指向的值 | int data = *intPtr; | |||
& | 取变量的地址 | int *intPtr = &data; | |||
sizeof | 某某的大小 | size_t s = sizeof(int); | |||
new | 动态内存分配(C++专有) | long* pVar = new long; | |||
new[] | 动态数组内存分配(C++专有) | long* array = new long[20]; | |||
delete | 动态内存释放(C++专有) | delete pVar; | |||
delete[] | 动态数组内存释放(C++专有) | delete [] array; | |||
4 | .* | 成员对象选择(C++专有) | obj.*var = 24; | ||
->* | 成员指针选择(C++专有) | ptr->*var = 24; | |||
5 | * | 乘法 | int i = 2 * 4; | ||
/ | 除法 | float f = 10.0 / 3.0; | |||
% | 模数(取余) | int rem = 4 % 3; | |||
6 | + | 加法 | int i = 2 + 3; | ||
- | 减法 | int i = 5 - 1; | |||
7 | << | 比特左移 | int flags = 33 << 1; | ||
> | 比特右移 | int flags = 33 >> 1; | |||
8 | < | ||||
<= | |||||
> | |||||
(>=) | |||||
9 | == or eq | 等于 or ==的备用拼写 | |||
!= or not_eq | 不等于 or !=的备用拼写 | ||||
10 | & or bitand | 比特AND or &的备用拼写 | flag1 = flag2 & 42; | ||
11 | ^ or xor | 比特XOR(独占or) or ^的备用拼写 | flag1 = flag2 ^ 42; | ||
12 | ‘I’ or bitor | 比特OR(包含or) or ‘I’的备用拼写 | flag1 = flag2 | 42; | |
13 | && or and | 逻辑AND or &&的备用拼写 | if (conditionA && conditionB) … | ||
14 | ‘II’ or or | 逻辑OR or ‘II’的备用拼写 | if (conditionA ‘II’ conditionB) … | ||
15 | c?t:f | 三元条件运算 | 条件表达式?表达式1:表达式2 问号前面的位置是判断的条件,判断结果为bool型,为true时调用表达式1,为flase时调用表达式2 | ||
16 | = | 直接赋值 | int a = b; | ||
+= | 以和赋值 | ||||
-= | 以差赋值 | ||||
*= | 以乘赋值 | ||||
/= | 以除赋值 | ||||
%= | 以取余数赋值 | ||||
<<= | 以比特左移赋值 | flags <<= 2 | |||
= | 以比特右移赋值 | flags >>= 2 | |||
&= or and_eq | 以比特AND赋值 or &=的备用拼写 | flags &= new_flags | |||
^= or xor_eq | 以比特XOR赋值 or ^=的备用拼写 | flags ^= new_flags | |||
‘I’= or xor_eq | 以比特OR赋值 or ‘I’=的备用拼写 | flags ‘I’= new_flags | |||
17 | throw | 抛出异常 | throw EClass(“Message”) | ||
18 | , | 逗号运算符 | for (i = 0, j = 0; i < 10; i++, j++) … |
列表
比较运算符
比特运算符
其他运算符