优先级顺序 | 运算符 | 名称 | 结合性 | 是否控制求值顺序 | 使用示例 |
1 | () | 聚组(括号) | 无 | 否 | (x+y) |
2 | () | 函数调用 | 左-->右 | 否 | Add(x,y) |
3 | [] | 下标引用(索引引用) | 左-->右 | 否 | arr[5] |
4 | . | 访问结构体成员 | 左-->右 | 否 | 结构体变量.a |
5 | -> | 用指针访问结构体 | 左-->右 | 否 | 结构体指针->a |
6 | ++ | 后置++ | 左-->右 | 否 | num++ |
7 | -- | 后置-- | 左-->右 | 否 | num-- |
8 | ! | 逻辑反(1->0,0->1) | 右-->左 | 否 | !a |
9 | ~ | 按位取反(二进制位) | 右-->左 | 否 | ~a |
10 | + | 表示正数值 | 右-->左 | 否 | +1 |
11 | - | 表示负数值 | 右-->左 | 否 | -1 |
12 | ++ | 前置++ | 右-->左 | 否 | ++num |
13 | -- | 前置-- | 右-->左 | 否 | --num |
14 | * | 指针运算符 (注:解引用,用于访问指针所指向的变量的值) | 右-->左 | 否 | *p |
15 | & | 取地址运算符 用于获取变量在内存中的地址 | 右-->左 | 否 | &num |
16 | sizeof | 求变量的长度,单位字节 以数据类型为准 | 右-->左 | 否 | sizeof(int) |
17 | (类型) | 强制类型转换 | 右-->左 | 否 | (char)a |
18 | * | 乘法 | 左-->右 | 否 | a*b |
19 | / | 除法 | 左-->右 | 否 | a/b |
20 | % | 对整数取余数 | 左-->右 | 否 | a%b |
21 | + | 加法 | 左-->右 | 否 | a+b |
22 | - | 减法 | 左-->右 | 否 | a-b |
23 | << | 左移位(二进制位) | 左-->右 | 否 | a<<1 |
24 | >> | 右移位 | 左-->右 | 否 | a>>1 |
25 | > | 大于 | 左-->右 | 否 | a>b |
26 | >= | 大于等于 | 左-->右 | 否 | a>=b |
27 | < | 小于 | 左-->右 | 否 | a<b |
28 | <= | 小于等于 | 左-->右 | 否 | a<=b |
29 | == | 等于 | 左-->右 | 否 | a==b |
30 | != | 不等于 | 左-->右 | 否 | a!=b |
31 | & | 按位与(二进制位) (有0为0,同1为1) | 左-->右 | 否 | a&b |
32 | ^ | 按位异或(二进制位) (相同为0,不同为1) | 左-->右 | 否 | a^b |
33 | | | 按位或(二进制位) (有1为1,同0为0) | 左-->右 | 否 | a|b |
34 | && | 逻辑与 (左边为0,右边不算) | 左-->右 | 是 | a&&b |
35 | || | 逻辑或 (左边为真,右边不算) | 左-->右 | 是 | a||b |
36 | ?: | 条件操作符 (条件成立输出?,反之:) | 无 | 是 | a>0?a:b |
37 | = | 赋值 | 右-->左 | 否 | a=2 |
38 | += | 加等于 | 右-->左 | 否 | a+=2 (a=a+2) |
39 | -= | 减等于 | 右-->左 | 否 | a-=2 |
40 | *= | 乘等于 | 右-->左 | 否 | a*=2 |
41 | /= | 除等于 | 右-->左 | 否 | a/=2 |
42 | %= | 取余等 | 右-->左 | 否 | a%=2 |
43 | <<= | 左移等于 | 右-->左 | 否 | a <<=1 |
44 | >>= | 右移等于 | 右-->左 | 否 | a>>=1 |
45 | &= | 按位与等于 | 右-->左 | 否 | a&=b |
46 | ^= | 按位异或等于 | 右-->左 | 否 | a^=b |
47 | |= | 按位或等于 | 右-->左 | 否 | a|=b |
48 | , | 逗号表达式 (表达式都执行,结果为最后一个表达式的值) | 左-->右 | 是 | a=0,a+=3,a+=6 |