第六章:运算符的优先级
| 优先级 | 名称 | 符号 | 结合性 | 举例 |
|---|---|---|---|---|
| 1 | 数组取下标 | [] | 左结合性 (从左到右) | value = array[index] |
| 函数调用 | () | result = sum(a, b) | ||
| 取结构和联合的成员 | . | point.x | ||
-> | point_ptr->x | |||
| 自增(后缀) | ++ | value = count++ | ||
| 自减(后缀) | -- | value = count-- | ||
| 2 | 自增(前缀) | ++ | 右结合性 (从右到左) | value = ++count |
| 自减(前缀) | -- | value = --count | ||
| 取地址 | & | ptr = &value | ||
| 间接寻址 | * | value = *ptr | ||
| 一元正号 | + | value = +number | ||
| 一元负号 | - | value = -number | ||
| 按位取反 | ~ | result = ~mask | ||
| 逻辑非 | ! | if (!ready) | ||
| 计算所需空间 | sizeof | size = sizeof(int) | ||
| 3 | 强制类型转换 | () | 右结合性 (从右到左) | average = (double)sum / count |
| 4 | 乘法类运算符 | * | 左结合性 (从左到右) | area = width * height |
/ | average = sum / count | |||
% | remainder = value % 10 | |||
| 5 | 加法类运算符 | + | 左结合性 (从左到右) | total = a + b |
- | distance = end - start | |||
| 6 | 移位 | << | 左结合性 (从左到右) | result = value << 1 |
>> | result = value >> 1 | |||
| 7 | 关系 | < | 左结合性 (从左到右) | a < b |
> | a > b | |||
<= | a <= b | |||
>= | a >= b | |||
| 8 | 判等 | == | 左结合性 (从左到右) | choice == 1 |
!= | result != 0 | |||
| 9 | 按位与 | & | 左结合性 (从左到右) | result = flags & mask |
| 10 | 按位异或 | ^ | 左结合性 (从左到右) | result = a ^ b |
| 11 | 按位或 | | | 左结合性 (从左到右) | result = flags | mask |
| 12 | 逻辑与 | && | 左结合性 (从左到右) | age >= 18 && enabled |
| 13 | 逻辑或 | || | 左结合性 (从左到右) | is_admin || is_owner |
| 14 | 条件 | ? : | 右结合性 (从右到左) | max = a > b ? a : b |
| 15 | 赋值 | = | 右结合性 (从右到左) | value = 10 |
*= | value *= 2 | |||
/= | value /= 2 | |||
%= | value %= 10 | |||
+= | value += 5 | |||
-= | value -= 5 | |||
<<= | value <<= 1 | |||
>>= | value >>= 1 | |||
&= | flags &= mask | |||
^= | flags ^= mask | |||
|= | flags |= mask | |||
| 16 | 逗号 | , | 左结合性 (从左到右) | value = (a++, b++) |